写入文件,编译,创建文件但不写入
Writing to a file, compiles, creates a file but doesn't write
我已经阅读了 "The Questions that may already have your answer" 的答案,但对我没有帮助。
我想我的问题有一个快速的解决方案。
我想编写一个程序,其中
- 用户输入他们想要创建的文件的名称。
然后
在同一行输入一个整数amount=新创建的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
,程序会在我只输入两行后关闭。
你能告诉我我做错了什么吗?
您有两个 ostream,start
和 out
。您将 out
附加到文件(不写入任何内容),然后写入 start
(不附加任何内容)。
除了 Beta 的答案外,cin>> 会在用户按下回车键时在缓冲区中留下换行符。 getline() 在用户按下输入 "skip" 输入时读取此内容。
在使用 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;
}
我已经阅读了 "The Questions that may already have your answer" 的答案,但对我没有帮助。
我想我的问题有一个快速的解决方案。
我想编写一个程序,其中
- 用户输入他们想要创建的文件的名称。
然后
在同一行输入一个整数amount=新创建的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
,程序会在我只输入两行后关闭。
你能告诉我我做错了什么吗?
您有两个 ostream,start
和 out
。您将 out
附加到文件(不写入任何内容),然后写入 start
(不附加任何内容)。
除了 Beta 的答案外,cin>> 会在用户按下回车键时在缓冲区中留下换行符。 getline() 在用户按下输入 "skip" 输入时读取此内容。
在使用 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;
}