マークされた行に次のコンパイルエラーが発生します。
エラー:'<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();
}
};