-1

テキスト ドキュメントの各行をベクトルに格納する必要があります。ただし、どのファイル テキストを試しても、出力は常に 2 行です。最初の 1 つは空で、2 番目の出力は常に "DONE" です。私はVC++ 2013を使用してWindows7 X64を使用しています。

私はこれを何時間も解決しようとしてきました。私は多くの異なるアプローチを試みましたが、結果は同じままです。「DONE」は getline() からの戻り値であると思われますが、コードが正常に機能していないことを理解していません。

int main() {

    ifstream hFile("test.txt");

    vector<string> lines;
    string line;
    while (std::getline(hFile, line))
        lines.push_back(line);

    cout << lines[1];

    hFile.close();

    getchar();
    return 0;
}

編集:コンパイルフォルダーからプログラムを実行すると正常に動作しますが、VC ++のデバッグコンソールでは動作しません...

4

2 に答える 2

1

プログラムはほとんど正しいように見えます。唯一の問題は、ファイルに少なくとも 2 行あることをコードが想定していることです。

cout << lines[1];

未定義の動作が発生します。ファイルの 2 行目だけでなく、各行を印刷するつもりでしたか?

DONE動作の説明から、ファイルに文字列が含まれているか、実際に別のプログラムを実行していると思われます!

于 2013-11-09T19:40:21.673 に答える
0

注意してください、それは行数について何も証明しません:

cout << lines[1];

line.size()読み取り行をカウントするために使用します。実際、1 行のファイルの場合、2 番目の項目にアクセスする動作は未定義です。

于 2013-11-09T19:38:52.760 に答える