我已经阅读了“可能已经有你答案的问题”的答案,但这对我没有帮助。
我想我的问题有一个快速的解决方案。
我想写一个
的程序然后
在同一行中,他们输入一个整数=新创建的txt文件的文本行数。
在新行中,用户输入文本的第一行,在新行中输入下一行,依此类推。
所有这些行都保存到创建的文件中。
例如file.txt 3
bhjudshsu 565 jdd
hcxjs
jdckisa jsdjs
打开名为file.txt的文件后,我应该看到文本的上面三行。
这是我的代码示例:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
int amount;
string fileName, line;
ofstream start;
cin>>fileName>>amount;
ofstream out(fileName.c_str());
for(int i=0; i<amount; i++)
{
getline(cin, line);
start<<line<<endl;
}
start.flush();
start.close();
return 0;
}
问题是文件已创建,但它是空的。
此外,如果我输入file.txt 3
,我只输入两行后程序就会关闭。
你能告诉我我做错了吗?
答案 0 :(得分:3)
您有两个ostream,start
和out
。您将out
附加到文件(并且不对其写入任何内容),并写入start
(没有附加任何内容)。
答案 1 :(得分:1)
除了Beta的回答,cin&gt;&gt;当用户按下回车键时,将在缓冲区中留下换行符。当用户按下Enter键“跳过”输入时,getline()读取此内容。
在使用getline()之前,您可以使用cin.ignore()来删除这些额外的字符。
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
int amount;
string fileName, line;
cin >> fileName >> amount;
ofstream start(fileName.c_str());
for(int i = 0; i < amount; i++)
{
cin.ignore();
getline(cin, line);
start << line << endl;
}
start.flush();
start.close();
return 0;
}