コードを見てみましょう:
#include <iostream>
#include <fstream>
#include <string>
#include <cstdio>
#include <cstdlib>
using namespace std;
int main()
{
string usrFileStr,
fileStr = "airNames.txt", // declaring string literal
sLine; // declaring a string obj
fstream inFile; // declaring a fstream obj
char ch;
cout << "Enter a file: ";
cin >> usrFileStr;
inFile.open( usrFileStr.c_str(), ios::in );
// at this point the file is open and we may parse the contents of it
while ( !inFile.eof() )
{
getline ( inFile, sLine ); // store contents of txt file into str Obj
for ( int x = 0; x < sLine.length(); x++ )
{
if ( sLine[ x ] == ',' )break; // when we hit a comma stop reading
//cout << sLine[ x ];
}
cout << endl;
}
while ( !inFile.eof() ) //read the file again until we reach end of file
{
// we will always want to start at this current postion;
inFile.seekp( 6L, ios::cur );
getline( inFile, sLine ); // overwrite the contents of sLine
for ( int y = 0; y < sLine.length(); y++ )
{
if ( sLine[ y ] == ',' )break; // hit a comma then goto seekp until eof
cout << sLine[ y ];
}
cout << endl;
}
inFile.clear();
inFile.close();
fgetc( stdin );
return 0;
}
私のテキストファイル形式はこれに似ています:
string, string andthenspace, numbers, morenumbers
ファイルを 2 回読み取ることができないようです。EOF
毎回チェックして..
最初のwhile条件が機能し、必要なもの、コンマの前の最初のフィールド、およびコンマを含まないものを提供します。
だから私が2回目に考えたのは、2番目の各反復でそこから開始する関数だけでOK seekp(X, ios::cur)
..
残念ながら、ファイルをもう一度読み取っていません..