gpt4 book ai didi

C++ stringstream 错误:操作数类型 std::string 和 const unsigned int 的运算符 << 不匹配

转载 作者:行者123 更新时间:2023-11-30 01:45:23 25 4
gpt4 key购买 nike

我有这个接收 const vector 的函数的 <unsigned int, unsigned int>对:

// Type definitions
typedef std::pair<unsigned int, unsigned int> IdsPair;
typedef std::vector<IdsPair> IdsPairList;
typedef IdsPairList::const_iterator IdsPairIterator;

void Foo(const IdsPairList myPairsList){
std::stringstream ss;
ss << "List of ids: (";
for(IdsPairIterator idPair = myPairsList.begin();
idPair != myPairsList.end(); idPair++){
ss << (idPair->first == myPairsList.begin()) ? "" : "," << idPair->first; // ERROR
}
ss << ")";
std::string query = ss.str();
}

在用 // ERROR 选择的行,我收到以下错误:

error: no match for ‘operator<<’ (operand types are ‘std::string {aka std::basic_string<char>}’ and ‘const unsigned int’)

我不知道问题出在哪里,因为 stringstream 应该将 unsigned int 转换为字符串。

有什么帮助吗?我正在使用 C++98

最佳答案

ss << ((idPair->first == myPairsList.begin()) ? "" : ",") << idPair->first;
^ ^

添加括号

没有它们,这就是它试图做的:

ss << (idPair->first == myPairsList.begin()) ? "" : "," << idPair->first;
~~~~^^~~~~~~~~~~~~~~

你可以看到 C++ Operator Precedence

关于C++ stringstream 错误:操作数类型 std::string 和 const unsigned int 的运算符 << 不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34717359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com