我正在尝试学习fstream,这是我在VS2019上运行的代码:

#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>

using namespace std;

int main() {
    //cout << "lOOKING IN FILE";
    string s;
    fstream dictionary("C:/Users/source/repos/Test2/Test2/Text.txt");
    if (!dictionary) // were there any errors on opening?
        exit(-1);
    while (dictionary >> s) cout << s << '\n'; // Print all names in file
    dictionary.seekp(0, ios::beg); // Go back to beginning of file
    cout << dictionary.tellp() << endl;
    dictionary >> s;
    cout << s; // Print the first name
    return 0;
}

输出为:
abc
acb
cab
-1
cab

为什么tellp提供-1而不转到文件开头?

最佳答案

您需要clear流的状态。

流的状态从good更改后(即到达文件末尾或出现故障)后,您就无法在不清除状态的情况下再次对流进行操作。

关于c++ - 为什么tellp()给出-1?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60354926/

10-15 06:11