Wrong matrix reading with vector<vector<int>> on

Wrong matrix reading with vector<vector<int>> on C++

本文关键字:gt vector lt with on int matrix reading Wrong      更新时间:2023-10-16

你好,我假装在输入读取大小为n x n的矩阵时,对于每个n读取矩阵,我使用vector<vector<int>>来定义矩阵,我的输入是:

6
100100
001010 
000000 
110000 
111000 
010100

,我的代码是:

#include <bits/stdc++.h>
using namespace std;
int main(int argc, char const *argv[]) {
  int n;
  vector<vector<int>> grid;
  while(cin >> n){
    grid.resize(n);
    for(int i=0;i<n;i++){
      grid[i].resize(n);
      for(int j=0;j<n;j++){
        cin>>grid[i][j];
      }
    }
    for (int i=0;i<n;i++){
      for(int j=0;j<n;j++){
        cout<<grid[i][j];
      }
      cout<<endl;
    }
  }
  return 0;
}

但是我不知道为什么输出是:

1001001010011000011100010100
000000
000000
000000
000000
000000

对于我的感知,一行不能有超过6个数字,需要有6个数字,所以我不知道它在做什么!有人可以告诉我我做错了什么,并解释原因。

当您输入数字100100时,它被视为一个整数而不是6个整数。

10之后按Enter键。

除了打印错误之外,您必须记住100100本身是一个整数,std::cin::operator>>将立即读取它。要使它一次只读一个0/1,可以在两者之间插入空白,或者从输入读到中间的bool variable,然后从中复制。此外,如果您只有std::vector<std::vector<char>> s或std::vector<std::string>(以防您想将其视为文本),则不需要此。