大規模なファイル I/O ライブラリを構築していますが、現在 getline() とファイルへの書き込みの相互運用性に苦労しています。以下の私の質問は、残念ながら未回答のままです: C++ getline を使用してファイルから読み取ると、txt ファイルに書き込むことができなくなります。
getline() を使用すると、ファイルに書き込むことができなくなります。getline() を使用した読み取り要求は引き続き動作しますが、書き込み要求は失敗します。ただし、getline() の使用法をコメントアウトすると、書き込み操作は成功します。
私のコードは以下に掲載されています。最初の書き込み試行の後、failbit がアクティブになっていることに気付きました。ただし、getline() 操作を削除するとアクティブにならないため、これが発生する理由は不明です。
明確にする必要があります-既存のファイル(2行を含む)から完全に読み取ることができます。ただし、getline() ステートメントを削除しない限り、そのファイルに書き込むことはできません。
いつものように、どんな助けも感謝しています。
// Includes
#include <fstream>
#include <iostream>
#include <string>
// Namespace
using namespace std;
int main(){
// filestream object
fstream workFile("testdoc.txt"); //fstream uses ios::in | ios::out by default
// note that I have tried including ios::in | ios::out to no avail
// read from file
string grabbedLine;
getline(workFile, grabbedLine);
cout << "Line #1: " << grabbedLine << endl;
// write to file
workFile<< "Here is some output (#1)" << endl;
// read from file
getline(workFile, grabbedLine);
cout << "Line #2: " << grabbedLine << endl;
// write to file
workFile<< "Here is some output (#2)" << endl;
// wait for some input...
getchar();
}
Current console output (as expected from text file):
Line #1: This is line#1
Line #2: This is line#2