我对 file_pointer>>string_var 有疑问;有人可以澄清一下吗?

I have issues with file_pointer>>string_var; can someone please clarify?

我正在研究 C++ 文件概念。在下面的程序中,我试图了解如何读取和写入文件。

#include<iostream>
#include<fstream>
using namespace std;
int main()
{
    fstream myfile;
    string str1;
    myfile.open("H:/input_file.txt");
    myfile<<"test1 writing files"<<" ";
    myfile>>str1;
    cout<<str1<<endl;
    myfile<<"test2 append writing files"<<" ";
    myfile>>str1;
    cout<<str1<<endl;
    myfile.close();

    return 0;

}

我希望文件包含:"test1 writing files test2 overwriting files"。但是为什么文件只有:"test1 writing files"。我也不能在控制台上有任何输出(str1 的值)。我对 operator>> 的概念以及与 FILE I/O 相关的任何缓冲区的理解很差。谁能给我一个清晰的认识。

1) 在您的示例中,您应该移动 "cursor position" 以开始读取文件:

...
myfile << "test1 writing files" << " ";
myfile.seekg(0);
...

2) 下面的代码(您的代码)将读取 std::string

中的一个单词
myfile >> str1;

因此,在您的示例中,您应该使用循环:

...
string tmp;
while(myfile >> tmp)
  str1.append(tmp);
...