gpt4 book ai didi

c++ - 从文件中读取只显示最后输入的字符串,创建文件但它是空的

转载 作者:行者123 更新时间:2023-11-28 01:21:51 25 4
gpt4 key购买 nike

我的程序创建一个文件并在用户输入后命名,之后它将继续循环并询问您是否要继续添加到创建的文件中。在你说不之后,它会关闭文件并读取创建文件的前三行。我的程序没有将任何内容输出到文件中,它看起来是空的,并且确实读取了三行,但它们是用户最后输入的行,但输入了三次。如何解决这个问题?这是我的代码。

#include <iostream>
#include <fstream>
#include <string>
#include <stdlib.h>

using namespace std;

//Global Variables
fstream File;
string fileName, writeToFile;
char choice;

void write();
void read();
void exitprogram();

int main()
{
// Name and open the output file
cout << "What is the file name that you want to create?" << endl;
cin >> fileName;

cout << "File " << fileName << " has been created!" << endl;

ofstream File(fileName.c_str());

File.open(fileName.c_str());

if (File.is_open())
{
cout << "File opened successfully." << endl;
write();
}

else
{
cout << "Unable to open file" << endl;
}

return 0;
}

void write()
{
choice = ' ';

cout << "What do you want to add?: " << endl;
getline(cin.ignore(),writeToFile);
File << writeToFile << endl;

cout << "Do you want to add something else to the file (1=YES or 2=NO): ";
cin >> choice;

switch(choice)
{
case '1' :
write();
break;
case '2' :
cout << "Saving..." << endl;
File.close();
read();
break;
}
}

void read()
{
cout <<"Here are the first there lines of file " << fileName << endl;
for (int counter = 1; counter <= 3; counter++)
{
File >> writeToFile;
cout << writeToFile << endl;
}
exitprogram();
}

void exitprogram()
{
exit(0);
}

最佳答案

您通过在main 中声明另一个来隐藏 write 使用的全局File。 (道德是不要使用全局变量——几乎从不。通过参数来代替,尽管你的大部分都可以只是局部的。)

关于c++ - 从文件中读取只显示最后输入的字符串,创建文件但它是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55788513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com