c++ - 使用 seekg() C++ 倒带流

标签 c++ seekg

我是 C++ 新手。这是实际运行的程序的一部分,没有内存泄漏。它读取一行,计算每行有多少 double (aux_d),如果它等于 dim (dimention),则将其 push_back 到 vector 中。

读取行,然后倒回istringstream fss。但是当我打印 v_db[i] (vector_database) 时,它只会将零加载到坐标类中。

coordinates aux_c;
double aux_d;

...做事然后

while(std::getline(filestream,line)){
    i=0;
    std::istringstream fss(line);
    while( fss >> aux_d )
        i++;
    if (i != dim){
        std::cerr << "Wrong Tiberium_Base coordinates // "
                  << "Check line -"
                  << lc
                  << "-"
                  << std::endl;
        lc++;          
        continue;
    } 
    fss.seekg(0);
    fss >> aux_c;
    v_db.push_back(aux_c);
    lc++; 
}

所以我这样做只是为了让它发挥作用。

    std::istringstream fss2(line);
    fss2 >> aux_c;
    v_db.push_back(aux_c);
    lc++; 

我想知道这里到底发生了什么,因为我之前出于同样的目的使用过 seekg,并且根本没有任何问题(实际上在这个程序中)。谢谢。

最佳答案

完成循环后。

while( fss >> aux_d )
    i++;

fss 设置了 failbit。您需要先清除它,然后才能使用该流。

while( fss >> aux_d )
    i++;

...

// Clear the error states of the stream.
fss.clear();

fss.seekg(0);
fss >> aux_c;

关于c++ - 使用 seekg() C++ 倒带流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46136993/

相关文章:

c++ - 谷歌测试框架 - 测试用例之间的依赖关系

c++ - 无法更新相关文件中记录的字段,C++

c++ - 为什么一个空行占用两个字节?

c++ - CentOS 6 - libstdc++ 没有这样的文件或目录?

c++ - 有什么可以一般地反转 C++ Comparator 类型吗?

c++ - ifstream 如何使用 C++ 从特定行开始读取行

c++ - 难以使用 file.seekg() (C++)

C++ 试图忽略文件的一部分?

c++ - 尝试在 C++ 中使用结构时出错

c++ - 多精度初等函数实现