1

以下のコードがあります。コードの後に​​は、サンプル入力ファイルが続きます。配列を計算すると、次のようになります。

出力:

Joe
Browns
93
Samantha
Roberts
45

文字列が空白まで読み取ってから先に進むのはなぜですか? 文字列は空白を受け入れると思いましたか?ありがとう。

コード:

    ifstream in_stream;

    in_stream.open("in.dat");
    if(in_stream.fail())
    {
        cout<< "Input file opening failed.  \n";
        exit(1);
    }
    vector <string> a;
    int i = 0;
    string dummy;
    while(in_stream>>dummy)
    {
       a.push_back(dummy);
       cout<<a[i]<<endl;
        i++;
    }
    in_stream.close( );

サンプル入力ファイル:

Joe Browns
93
Samantha Roberts
45
4

2 に答える 2

1

operator>>あらゆる種類の空白を区切り文字として解釈します。getline()行全体を読む必要がある場合に使用します。

于 2013-02-25T22:43:30.510 に答える
0

while ループを変更して、行全体を読み取るようにします。

while (getline(in_stream, dummy))
{
    a.push_back(dummy);
    cout << a[i] << endl;
    i++;
}
于 2013-02-25T22:46:38.653 に答える