“二进制‘[’:未找到运算符

"binary '[' : no operator found

我有两个字符串向量:

std::vector<std::string> savestring{"1", "3", "2", "4"}; // some numbers
std::vector<std::string> save2{"a", "b", "c", "d"};      // some names

并且我希望在前者的基础上对后者重新排序,这样它最终就是{"a", "c", "b", "d"}。我试过这个:

for (int i=0; i<savestring.size(); i++)
{
    savestring[i] = save2[savestring[i]];
}

但我收到错误消息:

"binary '[' : no operator found which takes a right-hand operand of type 'std::basic_string<_Elem,_Traits,_Alloc>' (or there is no acceptable conversion)"

这是什么意思,我的代码有什么问题?

问题是 savestring[i]std::stringsave2[] 中的方括号内应该有一个整数。因此,解决方案是首先通过编写自定义函数将 std::string 转换为整数。

因此,将其更改为:

// Converts a std::string to an int
int ToInt( const std::string& obj )
{
    std::stringstream ss;
    ss << obj;

    int ret;
    ss >> ret;

    return ret;
}


for(int i=0;i<savestring.size();i++)
{
    savestring[i]=save2[ToInt(savestring[i])];
}

不要忘记在顶部写 #include <sstream> 来包含 sstream header。

您正在保存以字符串表示的数字。在用作数组索引之前,您需要将它们转换为数字。