【发布时间】:2015-03-31 19:27:36
【问题描述】:
提供的文本文件的行数不确定,每行包含 3 个以逗号分隔的双精度。例如:
-0.30895,0.35076,-0.88403
-0.38774,0.36936,-0.84453
-0.44076,0.34096,-0.83035
...
我想从文件中逐行读取这些数据,然后用逗号(,)符号将其拆分并保存在一个 N×3 数组中,我们称之为 Vertices [N] [3],其中 N 表示文件中未定义的行数。
到目前为止我的代码:
void display() {
string line;
ifstream myfile ("File.txt");
if (myfile.is_open())
{
while ( getline (myfile,line) )
{
// I think the I should do 2 for loops here to fill the array as expected
}
myfile.close();
}
else cout << "Unable to open file";
}
问题:我设法打开文件并逐行读取,但我不知道如何将值传递到请求的数组中。 谢谢。
编辑: 我已尝试根据收到的以下建议修改我的代码:
void display() {
string line;
ifstream classFile ("File.txt");
vector<string> classData;
if (classFile.is_open())
{
std::string line;
while(std::getline(classFile, line)) {
std::istringstream s(line);
std::string field;
while (getline(s, field,',')) {
classData.push_back(line);
}
}
classFile.close();
}
else cout << "Unable to open file";
}
这是正确的吗?以及如何访问我创建的向量的每个字段? (例如在数组中)? 我还注意到这些是字符串类型,我怎样才能将它们转换为浮点类型? 谢谢(:
【问题讨论】:
-
如果行数不确定,您应该使用
std::vector,而不是普通的二维数组来存储数据。 -
@DieterLücking 我对 C++ 相当陌生,在您在链接中提供的答案中,我应该执行 2 个 while 循环吗?还是我误会了什么地方?
-
是/否 - 但如果您有固定宽度的列,您可以使用 while/for(并确保数据一致性)
-
@DieterLücking 我根据您的建议编辑了上面的问题,是否正确?
标签: c++ arrays multidimensional-array