好的,所以我有点卡住了。我试图让用户输入16个字符并将其输入输出到网格中。但是,我一直遇到错误:
错误:无法在分配中将'std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string
}'转换为'char'。
我不明白错误是什么,我尽力找出问题所在,但不起作用。
例如:
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;
}
}
答案 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
。