84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
如题!! 有几个简单问题相请教大家: 1.fstream到底是分别有一个读指针和一个写指针呢,还是共用一个指针进行读写. 2.为什么seekg与seekp会互相影响,也就是说seekg(10)=seekp(10)=tellp()=tellg(). 3.如果seekg与seekp没什么分别,那它们分别存在的意思是什么。
ringa_lee
C++標準並不會去問對方如何去實現,所以 1) 你用的Linux XXX版本的libstdc++有可能使用同一個指針去實現seekg和seekp的功能,但在標準中你不該理解為同一的指針. 所以你理論上不用管他們是否IO都用同一個指針而是看有沒有錯。
2)如果你要不影響,你可以用不同的Stream。但問題不應該在互相影響上,而是在你沒有使用tellg時你不能說seekg的位置對不對, 同時你不用tellp不被調時,你也不可能知道seekp對不對,重點是你用seekp前要先知道自己在那,除了頭和尾.
3) 一個是用來讀的interface另一個是用來寫的, 如果你再往深一層去想,把File Stream的操作改為通用的stream,那不同的stream就有可能有不一樣的g和p指針而你的實現將不能重用.
C++標準並不會去問對方如何去實現,所以
1) 你用的Linux XXX版本的libstdc++有可能使用同一個指針去實現seekg和seekp的功能,但在標準中你不該理解為同一的指針. 所以你理論上不用管他們是否IO都用同一個指針而是看有沒有錯。
2)如果你要不影響,你可以用不同的Stream。但問題不應該在互相影響上,而是在你沒有使用tellg時你不能說seekg的位置對不對, 同時你不用tellp不被調時,你也不可能知道seekp對不對,重點是你用seekp前要先知道自己在那,除了頭和尾.
3) 一個是用來讀的interface另一個是用來寫的, 如果你再往深一層去想,把File Stream的操作改為通用的stream,那不同的stream就有可能有不一樣的g和p指針而你的實現將不能重用.