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