我在标记的行中收到以下编译错误:
错误:请求从 '<code>std::basic_ostream<char, std::char_traits<char>>' 转换为非标量类型 '<code>std::ostringstream'
你能帮我纠正我的例子吗?
#include <numeric>
#include <sstream>
using namespace std;
ostringstream ConvertLettersToNumbers(ostringstream acc, char input)
{
if(isdigit(input))
{
return acc << input; // error
}
else
{
return acc << static_cast<int>(input); // error
}
};
int main(int argc, char **argv)
{
string stringToCovert = "ABC";
ostringstream out = accumulate(stringToCovert.begin(), stringToCovert.end(),
string(), ConvertLettersToNumbers);
string convertedString = out.str(); // expected "656667"
return 0;
}
编辑:我的第一个版本使用有效但很慢的字符串:
string ConvertLettersToNumbers(string acc, char input)
{
if(isdigit(input))
{
return acc + input;
}
else
{
stringstream sstr;
sstr << static_cast<int>(input);
return acc + sstr.str();
}
};