【问题标题】:C++ After I use getline to read from a file I can no longer write to the txt fileC++ 使用 getline 从文件读取后,我无法再写入 txt 文件
【发布时间】:2011-05-03 17:50:11
【问题描述】:

我可以写入文本文件,然后我使用 getline,但我无法再写入该文件。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

int main(){
 ifstream infile;
 fstream crypto;
 ofstream hacker;
 string tempString;
 string tempString2;
 string plaintext;
 string line;
 string dec;
.
.
.
crypto<<"hello";//write some stuff to file here
use getline(crypto, line, '\n')
crypto<<"hi";//Doesnt write to file anymore. 

【问题讨论】:

  • 我认为问题与尝试同时读取和写入文件有关。如果这不是错误,则错误将在于 getline 以及您的使用方式。

标签: c++ iostream getline


【解决方案1】:

文件有一个单一的错误状态和一个共享的文件位置指示器,用于读写操作。

如果设置了错误状态,则文件的读取和写入操作都不会成功。超过文件末尾的读取是导致设置错误状态的一个触发器,在这种情况下,直到文件位置指示器重新定位在文件的边界内。

由于读取和写入只有一个位置指示器,因此每次在读取和写入同一个文件之间切换时都需要重新定位该指示器,以确保在您想要的位置执行下一个操作发生。

【讨论】:

    【解决方案2】:

    从您的代码中很难看出原样(尝试在每行后返回),但我猜您已将文件访问权限设置为读取。

    【讨论】:

      【解决方案3】:

      文件已进入错误状态。

      一旦文件处于错误状态,则所有 io 操作都将被忽略,直到您重置错误状态。所以基本上上面表明 getline 操作在某种程度上失败了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-07-29
        • 2023-03-06
        • 1970-01-01
        • 2018-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多