したがって、基本的に次のようなファイル data3.txt があります。
#file:data.txt
#data inputs
1 1234 +0.2 23.89 6.21
2 132 -0.03 3.22 0.1
3 32 0.00 31.50 4.76
そして、最初の 3 列を取得して、stringtreams を使用して新しいファイルに書き込みたい
#include <cctype>
#include <sstream>
#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
using namespace std;
int main(){
string line;
float curr_price, change;
int stock_number;
ifstream fin("data3.txt");
istringstream iss;
ostringstream oss;
if(!fin){
cerr<<"Can't open a file";
}
ofstream outfile("data2.txt");
while (getline(fin,line)){
iss.clear();
iss.str(line);
iss>>stock_number>>curr_price>>change;
while(isspace(iss.peek()))
iss.ignore();
while(iss.str() == "#")
iss.ignore();
if( iss.str()==""){
break;
}
oss<<stock_number<<"\t"<<curr_price<<"\t"<<change<<"\n";
outfile<<oss.str();
}
}
しかし、私は私の出力ファイルが厄介に見えます:
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
1 1234 0.2
0 0 0
0 0 0
1 1234 0.2
2 132 -0.03
0 0 0
0 0 0
1 1234 0.2
2 132 -0.03
3 32 0
ゼロがどこから来たのかわかりません.ofstreamをwhileループから外すと、最後のデータ行のみが出力されます