使用 fstream 写入文件后从文件中读取 - 始终为空
Read from a file after have written to it with fstream - always empty
std::fstream file("filename", std::fstream::in | std::fstream::out | std::fstream::trunc);
if (file)
{
file << "Some text" << std::flush;
std::string buffer;
//file >> buffer;
std::getline(file, buffer);
std::cout << buffer;
}
我需要写入文件并从中读取。在 运行 之后,我可以看到带有创建文本的文件,但是使用带有两个选项的代码如何读取 buffer
它总是空的。我做错了什么?
使用seekg(0)
设置开始位置。当您在文件上书写时,它会将位置移动到末尾,而要阅读它,您必须移动到开始位置。
std::fstream file("filename", std::fstream::in | std::fstream::out | std::fstream::trunc);
if (file)
{
file << "Some text" << std::flush;
std::string buffer;
//file >> buffer;
file.seekg(0);
std::getline(file, buffer);
std::cout << buffer;
}
std::fstream file("filename", std::fstream::in | std::fstream::out | std::fstream::trunc);
if (file)
{
file << "Some text" << std::flush;
std::string buffer;
//file >> buffer;
std::getline(file, buffer);
std::cout << buffer;
}
我需要写入文件并从中读取。在 运行 之后,我可以看到带有创建文本的文件,但是使用带有两个选项的代码如何读取 buffer
它总是空的。我做错了什么?
使用seekg(0)
设置开始位置。当您在文件上书写时,它会将位置移动到末尾,而要阅读它,您必须移动到开始位置。
std::fstream file("filename", std::fstream::in | std::fstream::out | std::fstream::trunc);
if (file)
{
file << "Some text" << std::flush;
std::string buffer;
//file >> buffer;
file.seekg(0);
std::getline(file, buffer);
std::cout << buffer;
}