没有操作符“<=”匹配这些操作数

问题描述:

整个项目很长,所以我刚才包含了相关的行。没有操作符“<=”匹配这些操作数

#include "stdafx.h" 
#include <iostream> 
#include <string> 

string list[50][50]; 
string a, b; 

for (int i = 0; i<50; i++) { 
    cout << "Insert a" << endl; 
    cin >> a; 
    cout << "Insert b" << endl; 
    cin >> b; 
    list[i][i] = { 
       {a}, 
       {b} 
    }; 
} 

赋值运算符“=”是唯一有错误的。错误是:“无运算符”=“匹配这些操作数,操作数类型是:std :: string = {...}”

我找不出这里的问题。如果我运行程序,它会正确地分配“a”,但不是“b”。

+2

你不能插入两个字符串到同一个地方。此外,使用现在的索引,它只会填充数组的对角线。 – InternetAussie

+4

你的标题是' aschepler

+1

你认为那条线有什么作用?左边的东西只有一个字符串,但右边的是两个字符串。你如何设定一个等于另一个? –

在我看来,你使用二维数组感到困惑。我想你想要的是这样的:

for (int i = 0; i<50; i++) { 
    cout << "Insert a" << endl; 
    cin >> a; 
    cout << "Insert b" << endl; 
    cin >> b; 
    list[i][0] = a; 
    list[i][1] = b; 
} 

你的代码进一步寻找它可能是更容易适应:

std::string list[50][50]; 
std::string a , b; 
int innerArraySize = 2; 
for (int i = 0; i<50; i++) 
{ 
    for (int j = 0; j < innerArraySize; j++) 
    { 
     cout << "Insert " << (char)(j + 'a'); 
     cin >> list[i][j]; 
    } 

} 
+0

这不会编译。原始数组不可分配。 – aschepler

你想要的2 50个数组的数组? 然后你应该这样做:

string list[50][2]; 
// . . . 
list[i][0] = a; 
list[i][1] = b; 
+0

这不会编译。原始数组不可分配。 – aschepler

+0

已修复并已编辑。 – InternetAussie

+0

我认为他/她想要有50x50矩阵。 – sergiol