gpt4 book ai didi

c++ - 如果文件位于 if 语句中,为什么我不能写入文件?

转载 作者:行者123 更新时间:2023-11-28 05:51:53 30 4
gpt4 key购买 nike

我正在尝试创建一个非常简单的程序来写入文件,但不明白为什么如果我将它放在 if 语句中,它就不允许我写入文件!这是代码:

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

using namespace std;
void readFile();

int main()
{
string line;
string today;
string readOrWrite;

cout << "Do you want to write to a file or read a file? " << endl;
cout << "Type \"write\" or \"read\" ";
cin >> readOrWrite;

if (readOrWrite == "read")
{
readFile();
}
else if (readOrWrite == "write")
{
cout << "How are you today? " << endl;
getline(cin, today);

ofstream myJournal;
myJournal.open("Journal.txt", ios::app);
myJournal << today << " ";
myJournal.close();
}
else
{
return 0;
}
return 0;
}
void readFile()
{
ifstream myJournal;
myJournal.open("Journal.txt");
string line;

if (myJournal.is_open())
{
while (getline(myJournal, line))
{
cout << line << endl;
}
myJournal.close();
}
else
{
cerr << "Error opening file ";
exit(1);
}
}

当我将它移出 if 语句时,它运行顺利并且能够写入文件,但是当我将它放入其中时,它打开程序,询问我“你想写入文件吗一个文件或读取一个文件?”,我输入“write”,然后它说“你今天好吗?”然后结束程序,打印“Press any key继续……”。有帮助吗?

最佳答案

it says "How are you today? " and then ends the program, printing "Press any key to continue...". Any help?

std::istream::ignore 应该对您遇到的这种情况有所帮助。

cout << "How are you today? " << endl;
cin.ignore(10, '\n'); // Inserted
getline(cin, today);

为什么我们需要介于两者之间?

它从缓冲区中取出足够长度的 10 个字符,并在遇到换行符即 '\n' 时停止。 (请记住,您在输入“wrtie”后按“enter”键)

通过这样做,您可以移动到下一个新行,防止 std::cin 出现任何解析失败。

更多信息:http://www.cplusplus.com/reference/istream/istream/ignore/

关于c++ - 如果文件位于 if 语句中,为什么我不能写入文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35074316/

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