std::ofstream 追加文件
std::ofstream appending files
所以我想在文件中输入一些东西,但它似乎不起作用。我的代码是这样的:
ofstream f("reservedTables.DAT");
cin >> table;
f.open("reservedTables.DAT", ios::out | ios::app);
f << table;
f.close();
我做错了什么?我为变量写了数字table
但它没有出现在我把它放在
快速浏览:
ofstream f("reservedTables.DAT");
分配流并打开文件。
cin >> table;
读取来自用户的输入。
f.open("reservedTables.DAT", ios::out | ios::app);
尝试重新打开文件。将失败。
f << table;
打开失败后流处于失败状态,无法写入。
f.close();
关闭文件。
溶液
仅打开文件一次并检查错误。
ofstream f("reservedTables.DAT", ios::app); // no need for ios::out.
// Implied by o in ofstream
cin >> table;
if (f.is_open()) // make sure file opened before writing
{
if (!f << table) // make sure file wrote
{
std::cerr << "Oh snap. Failed write".
}
f.close(); // may not be needed. f will automatically close when it
// goes out of scope
}
else
{
std::cerr << "Oh snap. Failed open".
}
那是
因为您要打开文件两次。
如果你打电话给open
,你实际上是在打电话给rdbuf()->open(filename, mode | ios_base::out)
。请注意(参考(:
如果关联的文件已打开,则立即返回空指针。
由于返回了 null 指针,因此会将其分配给内部文件缓冲区,并且不再打开任何文件。这意味着任何写入它的尝试都会失败。
如果指定文件名,构造函数已打开文件,因此无需调用 open
:
std::ofstream f("reservedTables.DAT");
std::cin >> table;
f << table;
f.close();
相关文章:
- 如何在特定位置追加 json 文件
- 文件追加的方式是,它在每次保存C++后结束行
- 在 c++ 中打开文件、删除标点符号并追加到另一个文件中
- 为什么将追加'.o'附加到头文件末尾是先决条件?
- C++ - 将文本追加到仅具有 NTFS"追加数据"权限的文件
- 分段 追加和读取二进制文件时出错
- 追加到文本文件在循环中无法正常工作
- std::ofstream 追加文件
- 如何在C++的追加模式下清除文件
- WriteFileGather - 将缓冲区追加到文件
- 在文本文件中覆盖和追加行(C++)
- 正在追加二进制文件
- 如何仅当文件存在时才使用追加模式打开文件
- minizip追加到文件
- 将文本文件的内容追加到C++中的另一个文件
- 在 C++ 中覆盖文件(不追加)
- fseek 在"a"(追加)模式下打开文件时不起作用
- 使用 cpp 在 opencv 中的 xml 文件中追加元素
- 以追加模式打开文件,但截断文件
- C++ 不追加到文本文件