【发布时间】:2012-10-05 15:45:43
【问题描述】:
我想 C++ 逐行读取文件,并将每一行 w.r.t 拆分为 "\t" 字符以填充矩阵。我的代码会这样
ifstream data_x;
double** test_data = new double*[100];
for(int j = 0 ; j < ; j++)
test_data[j] = new double[4];
data_x.open("X.txt");
int i = 0;
if (data_x.is_open())
{
while (!data_x.eof())
{
char** split = data_x.split("\t")
for(int k = 1 ; k < 4 ; k++)
test_data[i][k];
i++;
}
}
data_x.close();
ifstream data_y;
data_y.open("Y.txt");
i = 0;
if (data_y.is_open())
{
while (!data_y.eof())
{
data_y >> test_data[i][0];
i++;
}
}
data_y.close();
语法
char** split = data_x.split("\t")
for(int k = 1 ; k < 4 ; k++)
test_data[i][k];
是近似的。如何用 C++ 正确地做到这一点?
谢谢
【问题讨论】:
-
使用 std::string、getline 和字符串库函数。
-
首先使用std::string,然后使用boost字符串算法库分割每一行。
-
每当我看到
while (!data_x.eof())我可以保证下面的代码是错误的。 (这样可以正确完成,但是有很多更简洁的习语,所以知道的人不要在测试中使用 eof() )。
标签: c++ split char iostream ifstream