本周我开始用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
在文件中插入一行[END to finalize]:在。中插入一行 file [END to finalize]:在文件中插入一行[END to finalize]:
答案 0 :(得分:4)
operator>>(istream&, string&)
基本上抓住了下一个词。如果您想抓一整行,请尝试std::getline(std::cin, answer);
。
getline
不会包含换行符。这意味着您必须执行myfile << answer << '\n';
之类的操作才能将它们输出为行。
myfile.open("example.txt", ios::app);
之类的东西。每次像你一样在循环中打开文件,我很确定你将文件指针放在文件的开头,所以你写的每一行都会至少覆盖前一行的第一部分。
答案 1 :(得分:0)
cin >> answer
将读取一个由空格分隔的单词。
如果您想阅读整行,请使用getline(cin, answer)