我有两个字符串向量:
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]];
}
但是我得到了错误:
“二进制'[':未找到采用'std :: basic_string <_Elem,_Traits,_Alloc>'类型的右侧操作数的运算符(或没有可接受的转换)”
这是什么意思,我的代码有什么问题?
问题是这savestring[i]
是a,std::string
而中的方括号内应该有一个整数save2[]
。因此,解决方案是首先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])];
}
不要忘记在顶部sstream
写#include <sstream>
上标题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句