如何打开文件或创建文件(如果文件不存在)并用控制台中的值填充它
How to open a file or create it if it doesn't exist and fill it with values from the console
我的目标是编写一个程序,检查文件是否存在以及是否包含值。如果它是真的,程序应该将这些值从文件中读取到数组中,如果不存在,则创建一个文件,并从控制台将值写入文件。我写下一个代码:
#include <fstream>
#include <iostream>
using namespace std;
int main(void)
{
char filename[] = "alphabet.txt";
string alphabet;
char ch;
bool f;
fstream fileWithAlphabet;
fileWithAlphabet.open(filename, std::fstream::in | std::fstream::out | std::fstream::app);
(fileWithAlphabet.peek() == std::ifstream::traits_type::eof()) ? f = true : f = false;
if (f)
{
cout << "File empty, fill file" << endl;
cout << "Fill the file with alphabet characters" << endl;
cout << "please enter a single character, using q to stop: " << endl;
for (;;) {
cin >> ch;
if (ch == 'q')
break;
fileWithAlphabet << ch << "n";
}
fileWithAlphabet.close();
}
else
{ // use existing file
cout << "success " << filename << " open. n";
cout << "read from a file";
**** read into array ****
fileWithAlphabet.close();
}
return 0;
}
请说,为什么在执行代码并从控制台输出后,文件仍然为空?
在peek
之后,文件处于eof
状态,您无法在其中写入。
重新开始设置:
(fileWithAlphabet.peek() == std::ifstream::traits_type::eof()) ? f = true : f = false;
fileWithAlphabet.seekg (0);
相关文章:
- SSH通过/sbin/SSH无法读取RSA密钥文件(从控制台运行)
- 如何从Windows控制台调用.exe(C++)以在不同的目录(或任何目录)中创建文件夹?
- 来自Visual Studio中控制台项目的exe文件?
- 从文件读取并通过矢量输出到控制台
- 将 clangd stderr 重定向到文件而不是控制台
- 保存文件并使控制台不关闭:Visual Studio 2019
- 打印到文件和控制台 C++
- 如何将控制台输出中的所有内容复制到文本文件?
- 有没有办法将 getline() 与外部文本文件一起使用,然后重新获得 cin 的控制权以从控制台获取输入?
- Visual Studio控制台调试了错误的文件
- Visual C 关闭文本文件和打开新的控制台窗口
- CPP 控制台,关闭时,打开另一个 cpp 文件
- C++ 使用简单的代码同时写入文件和控制台输出
- 将 ffmpeg 控制台输出重定向到C++中的字符串或文件
- 如何从控制台启动可执行文件并使用Qt读取输出
- catch2-输出到控制台和文件
- 嵌入批处理脚本文件并在C 控制台项目中运行
- C++同时记录到控制台和日志文件
- QT控制台:记录所有stdin和stdout要文件
- C++-将stdout/stderr复制到文件,同时保留控制台输出