我對 std::getline 函式的使用有些困惑。看下面的代碼:
#include <sstream>
#include <string>
std::ifstream ifs(filename);
std::string line;
while (std::getline(ifs, line))
{
//...//
}
for ( std::string s; getline(ifs, s)){
//...//
}
對于 while 回圈和 for 回圈,似乎每次在新的迭代中,“geline”都在讀取一個新行,例如,如果我們有一個檔案存盤:
1 2
3 4
5 6
然后在第一次迭代中, getline 讀取1 2,然后3 4在下一次迭代中......那么,它如何知道迭代開始時應該從哪一行開始讀取?
uj5u.com熱心網友回復:
檔案流是位元組(“字符”)的來源。每次從檔案中讀取一個字符時,檔案獲取指標都會前進到下一個要讀取的字符。
也就是說,每次閱讀時,都會得到下一個未讀字符。
std::getline()只是讀取字符,直到它獲得分隔符值('\n'默認情況下)。因此,每次呼叫 getline() 都會獲取檔案中的下一行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/412398.html
標籤:
