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

时间:2017-04-24 23:28:53

标签: c++

整个项目很长,所以我刚刚收录了相关的部分。

#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}
    };
}

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

我无法弄清楚这里的问题是什么。如果我仍然运行该程序,它会正确分配“a”,但不能“b。”

2 个答案:

答案 0 :(得分:1)

我认为您使用2D阵列会感到困惑。我想你想要的是这样的:

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];
    }

}

答案 1 :(得分:0)

你想要一个包含50个2的数组吗? 然后你应该做这样的事情:

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