所以我有一个文件 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
我想使用 stringtreams 将前 3 列写入一个新文件
#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 循环之外,那么它只会打印最后一个数据行