答案 0 :(得分:3)
这是因为编译器将以下语句理解为您要向字符串添加单个字符(如果字符串编码为ascii,则该字符对应于a的ascii代码):
result += a;
您可以尝试以下方法来测试operator+=
的这种行为:
result += 64; // ascii code for @
要获得期望的结果,您需要将a
显式转换为字符串。因此,将行更改为:
result += to_string(a);
或者,如果您有很多格式设置,并且对流感到满意,则可以考虑使用stringstream
:
string check (int n, int x, int y)
{
stringstream result;
for (int a=0; a<n; a++)
{
if ((a%x==0)&&(a%y>0))
{
result << a << " ";
}
}
return result.str();
}
字符串流的行为类似于普通流(例如cout
),只是它们将结果写入内存。然后,您可以使用str()
成员函数轻松地转换最终结果。