c++ - 为什么我不能在我的程序中使用 "file_ptr>>variable"从文件中读取?

标签 c++ file c++11 fstream flush

在下面的程序中,我试图了解如何读取和写入文件。

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    fstream myfile;
    string str1;
    myfile.open("H:/input_file.txt");
    if(myfile.is_open())
    {   
    myfile<<"test1 writing files"<<" ";
    myfile>>str1;
    cout<<str1<<endl;
    }
    return 0;
}

为什么即使将“test1 writing files”写入文件,我也没有在控制台上得到任何输出?

最佳答案

文件将需要以读写方式打开(对不起,忽略它;默认情况下,fstream 以读写方式打开)。写入(并刷新输出)后,您将需要 seekg() 回到文件的开头,否则您将只是尝试读取您最后写入的内容之后的内容,这将当然算不了什么。

myfile<<"test1 writing files"<<" ";
myfile.flush(); 
myfile.seekg(0, ios_base::beg);
myfile>>str1;

seekg 用于更改您从文件中读取(获取)的位置。 seekp 用于改变你写(放)到文件的位置。

关于c++ - 为什么我不能在我的程序中使用 "file_ptr>>variable"从文件中读取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35836214/

相关文章:

c++ - 如何从文件名中找到哪个进程对文件有句柄

c++ - 串行端口性能 - VB.NET 与 C++ & Boost

c - 将文件中的数据放入C中的数组

c++ - 覆盖c库文件函数?

java - 如果文件名不存在,如何写入新文件并追加文件?

c++ - 关于 C++0x,我需要了解什么?

c++ - 无法使用regex c++ 11 std在Windows中运行使用minGW编译的程序

c++ - 限制嵌套结构中的构造函数范围

C++ STL 常量迭代器和常量指针

c++ - 多重定义编译错误