0

今週、私は C++ でテキスト ファイルの学習を開始しました。演習では、ユーザーがファイルに行を入力するプログラムを実行する必要がありますが、... ユーザーが入力する各スペースに対して、プログラムは新しいユーザーに質問します。

これが私のコードです:

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(void){
    ofstream myfile;
    string answer;

    do{
        cout << "Insert a line in the file[END to finalize]: ";
        cin >> answer;
        myfile.open("example.txt");
        myfile << answer;
        myfile.close();
    }while(answer != "END");
}

結果は次のとおりです。

ファイルに行を挿入します[END to finalize]: Hello my friend

ファイルに行を挿入[終了して終了]: ファイルに行を挿入[終了して終了]: ファイルに行を挿入[終了して終了]:

4

2 に答える 2

4

operator>>(istream&, string&)基本的に次の単語を取得します。行全体を取得したい場合は、 を試してくださいstd::getline(std::cin, answer);

getlineただし、改行は含まれません。myfile << answer << '\n';つまり、それらを行として出力するようなことをしなければなりません。

ところで、ほとんどの場合、ループの外側でファイルを開くか、myfile.open("example.txt", ios::app);. あなたがやっているように毎回ループでファイルを開くと、ファイルポインターをファイルの先頭に置くと確信しているので、書き込む各行は少なくとも前の行の最初の部分を上書きします。

于 2012-05-22T18:58:13.140 に答える
0

cin >> answer空白で区切られた 1 つの単語を読み取ります。行全体を読みたい場合は、次を使用しますgetline(cin, answer)

于 2012-05-22T19:03:54.830 に答える