2010-11-02 5 views
0

Я могу писать в текстовый файл, тогда я использую getline, и я больше не могу писать в файл.C++ После того, как я использую getline для чтения из файла, я больше не могу писать в txt-файл

#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. 
+0

Я думаю, что проблема связана с попыткой чтения и записи из файла одновременно. Если это не ошибка, ошибка будет лежать в getline и как вы используете. – Jim

ответ

0

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

0

В файл введено сообщение об ошибке.

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

2

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

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

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