我有一个包含多行和多列的文本文件。
234 567 890 4523
12 34
78 23 432
我想将它们读入一个数组a[0][0] = 234
,而a[1][0] = 12
等等。我可以使用input >> a[i]
将它们全部变为单维,但我喜欢它在二维数组中。我尝试使用getline()
但到目前为止还没有取得任何成功。
答案 0 :(得分:1)
您可以std::vector
使用std::vector
。
对于每一行,读入每个数字并使用push_back
将其复制到相关向量(数组)的末尾。
您可以使用std::istringstream
来读取表示输入行的字符串。
您可以使用std::string
将{1}}中的一行输入读入std::getline
。
在伪代码中就像
void foo()
{
std::vector< std::vector< int > > numbers;
std::string line;
while( getline( cin, line ) )
{
std::istringstream stream( line );
numbers.push_back( std::vector<int>() );
std::vector<int>& v = numbers.back();
int number;
while( stream >> number )
{
v.push_back( number );
}
}
}
免责声明:编译器未触及代码,省略所有错误检查等。
答案 1 :(得分:0)
可能是因为你没有在每个数字后读取空格。尝试fgets然后使用sscanf将每个值读入您的数组。我不太熟悉如何在c ++中实现这一点。但我相信cin.getline()应该和fgets做同样的事情