从文件中读取字符串到数组

时间:2013-02-21 01:40:42

标签: c++ string multidimensional-array getline

我有一个包含多行和多列的文本文件。

 234 567 890 4523
 12  34  
 78  23  432

我想将它们读入一个数组a[0][0] = 234,而a[1][0] = 12等等。我可以使用input >> a[i]将它们全部变为单维,但我喜欢它在二维数组中。我尝试使用getline()但到目前为止还没有取得任何成功。

2 个答案:

答案 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做同样的事情