以下為一個簡單讀檔範例:
#include<bits/stdc++.h>
using namespace std;
int main(int argc, char** argv)
{
ifstream inputFile("haha");
string line;
while(getline(inputFile, line))
{
int a = 0;
stringstream tkn(line);
tkn >> a;
cout << " a = " << a << endl;
}
return 0;
}文字檔 haha 內容:
3
5
6
注意結尾有多一換行。
-----------------------------------------------------
此情況下,程式執行結果:
a = 3
a = 5
a = 6
a = 0
-----------------------------------------------------
getline 在讀檔最後一行,會讀到空的字串。造成多了一筆無效資料。
所以 stringstream 切 token 時,要特別小心,用 if(tkn >> a) 條件判斷 stringstream 是否 fail。
留言
張貼留言