以下為一個簡單讀檔範例:
#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。
留言
張貼留言