C++ stringstream error: no match for operator<< for operand types std::string and const unsigned int

C++ stringstream error: no match for operator<< for operand types std::string and const unsigned int

我有这个函数接收 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