0

我可以写入一个文本文件,然后我使用 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. 
4

3 回答 3

2

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

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

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

于 2010-11-02T12:35:19.187 回答
0

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

于 2010-11-02T03:05:21.340 回答
0

文件已进入错误状态。

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

于 2010-11-02T03:47:54.067 回答