用用户输入填充网格

时间:2018-11-12 01:35:43

标签: c++

好的,所以我有点卡住了。我试图让用户输入16个字符并将其输入输出到网格中。但是,我一直遇到错误:

  

错误:无法在分配中将'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string }'转换为'char'。

我不明白错误是什么,我尽力找出问题所在,但不起作用。

例如:

  1. 用户输入1234123412341234
  2. 它应该输出:

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

代码如下:

#include <iostream>
#include <stdlib.h>

using namespace std;

void fillLgArray(char grid[][LG_GRID], int direction);

void outputLgArray(char grid[][LG_GRID]);


int main(){

    char myGrid1[LG_GRID][LG_GRID];
    doCommand (myGrid1);

  return 0;
}


void fillLgArray(char grid[][LG_GRID], int direction){

  string userInput;

  cout << "Please enter 16 characters!\n";
  cin >> userInput;

  if(userInput.length() > 16){

      userInput = userInput.substr(0, 16);
  }

  cout << "You entered " << userInput << endl;

  if (direction = 1){
      for (int row = 0; row < LG_GRID; row++){
          for (int col = 0; row < LG_GRID; row++){
                grid [row][col] = userInput;
        }
    }
  }
}

void outputLgArray(char grid[][LG_GRID]){

    for (int row=0;row <LG_GRID;row++){
    for(int col=0;col <LG_GRID;col++){
      cout << grid[row][col]<<" ";
    }
    cout << endl;
  }
}

1 个答案:

答案 0 :(得分:1)

grid [row][col] = userInput;

您正在尝试将整个userInput(类型为std::string,又名std::__cxx11::basic_string,并且是多个字符)分配给单个字符grid[row][col](类型为char)。指定要保存在grid[row][col]中的字符串的哪个字符:

grid [row][col] = userInput[...];

用您要选择的字符索引替换...

与问题无关

for (int col = 0; row < LG_GRID; row++){

row在两种情况下都应为col,否则您实际上就不会更改col