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]:你好我的朋友

在文件中插入一行[END to finalize]:在文件中插入一行[END to finalize]:在文件中插入一行[END to finalize]:

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将读取一个单词,以空格分隔。如果您想阅读整行,请使用getline(cin, answer)

于 2012-05-22T19:03:54.830 回答