Re: [問題] tellg會吃資料(dev c++)
※ 引述《htymrednuht (htymrednuht)》之銘言:
: 最近使用tellg, seekg出現了問題
: 寫了一個測試的檔案
: 先設立test.txt裡面存
: 1234567890 9876543210
: 1234567890 9876543210
: 1234567890 9876543210
: 然後test.cpp中寫
: ifstream test("test.txt");
: string e;
: test >> e;
: cout << e << ' ' << test.tellg() << endl;
: test >> e;
: cout << e << ' ' << test.tellg() << endl;
: test >> e;
: cout << e << ' ' << test.tellg() << endl;
: system("pause");
: test.close();
: 結果出來是
: 1234567890 12
: 876543210 23
: 1234567890 34
: 中間的9不見了
: 請問這是甚麼原因呢?
: 謝謝各位
因為在window下換行字元是存成CR LF('\r''\n'), 佔了兩個 bytes
的空間, 從檔案存進緩衝區的時候, 一般都會自動幫你轉換成'\n',
所以讀出資料的時候看不出來
一旦你呼叫了 tellg(現在在檔案的什麼位置?)的時候, 他會想辦法
換回" 原始檔案內的位置" 來給你, 當初換掉 k個 CRLF, 位移量就
多加 k
以上是小弟的見解, 有錯還請不吝指教~ ^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
推
04/05 20:58, , 1F
04/05 20:58, 1F
→
04/05 20:59, , 2F
04/05 20:59, 2F
→
04/05 21:04, , 3F
04/05 21:04, 3F
→
04/05 22:16, , 4F
04/05 22:16, 4F
→
04/05 22:16, , 5F
04/05 22:16, 5F
→
04/06 03:16, , 6F
04/06 03:16, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章