C ++ //尝试重写有效的代码以包含我的函数

时间:2019-05-12 20:47:35

标签: c++ function int ascii iostream

1 个答案:

答案 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()成员函数轻松地转换最终结果。