C++ 在使用seekg和tellg之前将数据流传输到文件时的怪异程序行为

C++ 在使用seekg和tellg之前将数据流传输到文件时的怪异程序行为,c++,fstream,C++,Fstream,我将尽可能地澄清:每当我在“do”循环和指针读写之前尝试将数据流传输到文件时,我的程序都会发疯!它似乎在运行一个无限循环 fstream fileHandler; //Can also be done via constructor fstream fileHanlder("myData.txt", ios::out); //fileHandler.open("myData.txt", ios::out);//Default is in AND out fileHandler.open("te

我将尽可能地澄清:每当我在“do”循环和指针读写之前尝试将数据流传输到文件时,我的程序都会发疯!它似乎在运行一个无限循环

fstream fileHandler; //Can also be done via constructor fstream fileHanlder("myData.txt", ios::out);
//fileHandler.open("myData.txt", ios::out);//Default is in AND out

fileHandler.open("test.txt", ios::in | ios::binary | ios::out);

if (fileHandler.is_open()) {

    //fileHandler << "anything" <---HERE IS THE PROBLEM
    cout << "The file has been opened and edited properly.";

    fileHandler.seekg(0, ios::end);
    streampos sizeOfFile = fileHandler.tellg();//tellg returns type streampos
    fileHandler.seekg(0, ios::beg);

    do{
        string buffer;
        fileHandler >> buffer;
        cout << buffer << endl;

    }while(!fileHandler.eof());

    if ((fileHandler.rdstate()^ifstream::eofbit) == 0) {
        fileHandler.clear();
        cout << fileHandler.tellg() << endl;
    }


    fileHandler.close();

} else cout << "There was a problem opening the file!";
fstream文件处理器//也可以通过构造函数fstream filehandle(“myData.txt”,ios::out)完成;
//open(“myData.txt”,ios::out)//默认值是输入和输出
open(“test.txt”,ios::in | ios::binary | ios::out);
if(fileHandler.is_open()){

//fileHandler由于某些原因,删除二进制标志将其修复。

当您的程序运行时,编译器已经完全不存在。由于您没有检查输入是否成功,因此您被卡住也就不足为奇了。
eof
几乎从来都不是循环中的正确条件。如果您的文件是二进制文件,为什么要读取它转换为字符串?文件的内容是什么?我尝试将二进制标志设置为调试尝试。没有它也会发生同样的事情。我的.txt文件只有一个简单的短语。您创建的fstream是只读的(ios::in),但正在尝试写入它?我还将去掉ios::binary,以便您可以读取“文本”来自流。是的…太奇怪了。有了“out”它没有效果。但是有了“out”和没有二进制,它就停止了。非常感谢。如果你想回复,我会给你最好的答案