C ++ После того, как я использую getline для чтения из файла, я больше не могу писать в текстовый файл - PullRequest
0 голосов
/ 02 ноября 2010

Я могу записать в текстовый файл, затем использую 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. 

Ответы [ 3 ]

2 голосов
/ 02 ноября 2010

Файлы имеют одно состояние ошибки и общий индикатор положения файла, который используется для операций чтения и записи.

Если установлен статус ошибки, то ни операции чтения, ни записи в файле не будут выполнены успешно. Чтение после конца файла - это один из триггеров, который приведет к установке статуса ошибки, в этом случае, пока индикатор положения файла не будет перемещен в пределах границ файла.

Поскольку имеется только один индикатор положения как для чтения, так и для записи, вам необходимо перемещать этот индикатор каждый раз, когда вы переключаетесь между чтением и записью одного и того же файла, чтобы убедиться, что вы выполняете следующую операцию в позиции, в которой вы собираетесь произойти.

0 голосов
/ 02 ноября 2010

Файл вошел в состояние ошибки.

Когда файл находится в состоянии ошибки, все операции ввода-вывода будут игнорироваться, пока вы не сбросите состояние ошибки. Таким образом, в основном вышесказанное предполагает, что операция getline в некотором роде завершилась неудачно.

0 голосов
/ 02 ноября 2010

Сложно увидеть из вашего кода как есть (попробуйте возвращаться после каждой строки), но я думаю, вы установили доступ к файлу для чтения.

...