跳到主要內容

[C++] getline 空白的一行

 以下為一個簡單讀檔範例:


#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。

留言