【问题标题】:Trying to manipulate files in c++试图在 C++ 中操作文件
【发布时间】:2015-03-04 22:45:50
【问题描述】:

使用<fstream> 库打开流并将流添加到现有文件test.rtf 时,我使用以下行:

char data[100];

// open a file in write mode.
ofstream outfile;
outfile.open("test.rtf");
if (outfile.is_open()) { cout << "file is open" << endl; }

cout << "Writing to the file" << endl;
cout << "Enter your name: ";
cin.getline(data, 100);

// write inputted data into the file.
outfile << data << endl;

使用 ifstream 读取时,输入的行显示正确。问题是输出文件没有修改,我添加的行没有保存。这个问题可能听起来很愚蠢,但这是我无法解决的问题。

【问题讨论】:

  • 您确定要写入的文件与您之后查看的文件相同吗?你说如果通过 ifstream 读取内容就在那里——你通过什么其他方法独立检查文件内容?
  • 基本上,我使用 ifstream 类和 file_name >> 数据来读取内容

标签: c++ file stream


【解决方案1】:

当您

所以:

outfile.close()

当您想要写入文件但不关闭文件时,您还可以在将来刷新(实际上是从缓冲区写入文件)。 .close() 刷新然后自动为您关闭。

【讨论】:

  • 对不起,我没有在我的问题中包含这个问题,但实际上我确实按照你提到的那样关闭了它,这里是接下来的几行: cout > 数据; cin.ignore(); // 再次将输入的数据写入文件。输出文件
  • 那应该可以了,我只是构建并运行它来验证以防万一。我会遵循 Cameron 的建议并仔细检查您是否检查了正确的文件。特别是在运行程序之前删除您正在检查的“test.rtf”,并确保在运行程序后重新制作它。和/或使用绝对目录,例如 ~/usr/blahblah/test.rtf。
  • 谢谢!如果我不指定目录,文件会出现在哪里?
  • 没问题,玩得开心!当您使用相对链接时,它默认为当前工作目录。通常最好指定绝对路径以避免混淆。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 2016-05-28
相关资源
最近更新 更多