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

ファイルには、1 つのエラー ステータスと、読み取り操作と書き込み操作の両方に使用される共有ファイル位置インジケーターがあります。

エラーステータスが設定されている場合、ファイルに対する読み取り操作も書き込み操作も成功しません。ファイルの末尾を超えて読み取ることは、エラー ステータスが設定される原因となるトリガーの 1 つです。この場合、ファイル位置インジケーターがファイルの境界内に再配置されるまで続きます。

読み取りと書き込みの両方に位置インジケーターが 1 つしかないため、同じファイルの読み取りと書き込みを切り替えるたびにそのインジケーターの位置を変更して、意図した位置で次の操作を実行していることを確認する必要があります。

于 2010-11-02T12:35:19.187 に答える
0

コードからそのまま見るのは少し難しいですが(各行の後にリターンを試してください)、ファイルアクセスを読み取りに設定していると思います。

于 2010-11-02T03:05:21.340 に答える
0

ファイルがエラー状態になりました。

ファイルがエラー状態になると、エラー状態をリセットするまで、すべての io 操作が無視されます。したがって、基本的に上記は、getline 操作が何らかの形で失敗したことを示唆しています。

于 2010-11-02T03:47:54.067 に答える