Heed @Soravux回答並使用專業圖書館,如果可以的話。特別是,他建議的strtk工具包看起來很有趣,而且只是一個頭文件。 Boost也可以通過至少5種不同的方式來完成,如果您要在一段時間內使用C++,那麼它是一個值得學習的庫。也就是說,所有這些解決方案都會給你的程序增加一些複雜性,並且很可能你想把這個努力花在別的地方,特別是如果你需要的只是一個非常簡單的數字閱讀器。下面是如何在標準C++(STL的,例如,矢量和流)去:
#include <iostream>
#include <sstream>
#include <fstream>
#include <string>
#include <algorithm>
#include <vector>
using namespace std;
vector<double> &split(const string &s,
char delim, vector<double> &elems)
{
stringstream ss(s);
string item;
while (std::getline(ss, item, delim)) {
stringstream conv(item);
double number;
conv >> number;
elems.push_back(number);
}
return elems;
}
struct my_record_t{
double f1, f2, f3, f4;
};
typedef vector<my_record_t> my_record_vector_t;
int main(int argc, char* argv[])
{
stringstream in("10,20,2.0,5\n"
"4.,5.,6.,80\n"
"4.,2.,6.,70\n"
"4.,5.,6.,86\n"
"2.,5.,9.,80\n");
// Or alternatively, :
// ifstream in("myfile.csv");
// Here you store your records
my_record_vector_t mrv;
string line;
vector<double> numbers;
while(std::getline(in, line, '\n'))
{
numbers.clear();
split(line, ',', numbers);
my_record_t r;
r.f1 = numbers[0];
r.f2 = numbers[1];
r.f3 = numbers[2];
r.f4 = numbers[3];
mrv.push_back(r);
}
cout << mrv.size() << " records read" << endl;
return 0;
}
太長了一點,也許,但它可以節約你的時間。
[如何使用逗號分隔值讀入/從文本文件中讀取/寫入](http://stackoverflow.com/questions/1474790/how-to-read-write-into-from-text-file -with-逗號分隔值) –