C++ 获取get_指针位置时显示-1

C++ 获取get_指针位置时显示-1,c++,C++,即使在fin.seek(0)之后,fin.tellg()返回的get_指针的位置始终是-1(为什么?)。只有在读取文件直到eof()时才会发生。帮助 输出 this is the test file text 发件人: C++98:如果在调用之前设置了eofbit标志,则函数失败(设置failbit并返回) 如果在seekg之前执行fin.clear(),它将工作。一旦流状态出现故障(它确实出现了),任何流操作(包括查找)都将失败,直到该状态被清除为止 示例(使用字符串流): 相关:您确定您正

即使在fin.seek(0)之后,fin.tellg()返回的get_指针的位置始终是-1(为什么?)。只有在读取文件直到eof()时才会发生。帮助

输出

this is the test file text
发件人:

C++98:如果在调用之前设置了eofbit标志,则函数失败(设置failbit并返回)


如果在seekg之前执行
fin.clear()
,它将工作。

一旦流状态出现故障(它确实出现了),任何流操作(包括查找)都将失败,直到该状态被清除为止

示例(使用字符串流):


相关:您确定您正在阅读该文件吗?确保它位于正确的文件夹中。如果这是Visual Studio,则默认文件夹是包含项目文件的文件夹(除非您更改了项目的调试设置)。此外,如果找不到文件,您应该更新代码以警告用户。thnx但是如果您复制我的代码并检查一下自己会更好,我知道如何读取和写入文件您在返回开始之前忘记了streams失败状态。这是哪种语言?@AkashKabir代码?它是C++,用CLAN 3.8编译在代码< > STD= C++ 11 < /代码>模式下。是不是
auto
让你的编译器崩溃了?如果是这样,请改用
std::ios::pos\u type pos=…
。什么是isstringstream?它是特定于编译器的吗?不,它是一个字符串流(如示例所示),由
引入。阅读更多关于它(和书签的网站,因为它是最好的网上资源,C++你很可能会发现)。
this is the test file text
this is the test file text
pointer is at: -1
#include <iostream>
#include <sstream>

int main()
{
    std::istringstream iss("Some text to read");
    char ch;
    while (iss.get(ch))
        std::cout << ch;
    std::cout << '\n';

    iss.clear(); // <<==== HERE
    iss.seekg(0, std::ios::beg);

    auto pos = iss.tellg();
    std::cout << "pos = " << pos << '\n';

    while (iss.get(ch))
        std::cout << ch;
    std::cout << '\n';
}
Some text to read
pos = 0
Some text to read