C++输出文件
所以我试图做一个程序,提出问题,我回答他们,直到我选择停止(其内部循环)。 因此,举例来说,如果我打开该文件,它应该是这个样子:C++输出文件
test.txt
First question: 1.
Second Question: 2.
loop
First question: 3.
Second question: 4.
loop
...
,但我发现只有最后输入我做。
do {
cout<<"Enter 0 to end. \n";
cin >> a;
ofstream myfile;
myfile.open ("test.txt");
myfile << "First question: \n";
cin >> a;
myfile << a;
myfile << "Second question: \n";
cin >> b;
myfile << b;
myfile.close();
}while (a!=0);
我建议将问题和答案复制到文件中。
int main(void)
{
bool can_continue = true;
ofstream myfile("test.txt");
while (can_continue)
{
std::string question;
std::cout << "First Question:\n";
std::getline(cin, question);
my_file << "First Question:\n";
my_file << question << "\n";
std::cout << "Second Question:\n";
std::getline(cin, question);
my_file << "Second Question:\n";
my_file << question << "\n";
std::cout << "\nEnter 0 to quit, any other number to continue:";
int number;
std::cin >> number;
if (number != 0)
{
can_continue = false;
}
}
return EXIT_SUCCESS;
}
通过将提示复制到终端,您的用户可以知道是否会有输入。
请注意,使用operator>>
和std::string
只会导致一个单词被读入。您将希望使用std::getline
来输入文本,直到按下Enter。
我还不够理解继续,而且代码在这个问题上不起作用。 – Insanebench420
对不起,我的坏。 '继续'是一个保留字。查看我的编辑。 –
EXIT_SUCCESS未在此范围内声明,因此我将其替换为return 0;代码然后工作,我可以输入并按0,但test.txt中没有数据 – Insanebench420
std :: ofstream :: open默认不附加。因此,在你的情况下,它会为每个循环迭代创建一个带有两个输入的文件,并将其覆盖下一个。
问题是,每次循环运行时,都会得到一个指向文件的新指针,然后开始覆盖已经存在的内容。
有两种方法可以解决这个问题。
1)我强烈建议的一个,在你的循环之外做以下三个陈述。循环前的前两个和循环后的最后一个。这仍然可以让您根据需要多次写入。
ofstream myfile;
myfile.open ("test.txt");
myfile.close();
2)以追加模式打开文件。要做到这一点取代
myfile.open("test.txt");
与
myfile.open("test.txt", std::ios_base::app);
你为什么要打开和关闭文件中的循环?从循环中获取该代码。如果您想要,也可以设置打开模式以追加。 – drescherjm
我想继续输入数据,直到我决定停止。 – Insanebench420
已经有很多类似的问题。在互联网上搜索“stackoverflow C++文件问题答案”。 –