从cin读取双矩阵

时间:2015-03-18 21:54:22

标签: c++ matrix double cin

我需要从cin读取小队矩阵,但我不知道这个矩阵的大小。所以我需要读取第一行(由空格或制表符分隔的双数字,直到行尾)。解析此行后得到双数的计数。如果在行中将是n个双数,则矩阵大小将为nxn。我怎样才能做到这一点?

代码:

unsigned int tempSize = 0;
double tempPoint;
double * tempArray = new double [0];
string ts;

getline(std::cin, ts);
std::istringstream s(ts);
while (s >> tempPoint){
    if (!s.good()){
        return 1;
    }
    tempArray = new double [tempSize+1];
    tempArray[tempSize] = tempPoint;
    tempSize++;
}
cout << "temp size " << tempSize << endl;

输出:

temp size 0
Program ended with exit code: 0

1 个答案:

答案 0 :(得分:0)

  1. 使用std::getline读取一行。

  2. 从该行构建std::istringstream

  3. 继续阅读std::istringstream中的数字并将其添加到std::vector。当您完成阅读该行的内容后,std::vector中的项目数将为您提供矩阵的排名。

  4. 使用与读取矩阵第一行相同的逻辑来读取矩阵的其他行。

  5. 修改

    void readRow(std::vector<int>& row)
    {
       std::string ts;
       std::getline(std::cin, ts);
       if ( std::cin )
       {
          std::istringstream s(ts);
          int item;
          while (s >> item){
             row.push_back(item);
          }
       }
       std::cout << "size " << numbers.size() << std::endl;
    }