无法将整数写入字符串

时间:2017-08-19 17:04:41

标签: c++ string

下面是将整数转换为字符串的代码,我试图不使用C ++内置函数,但我的代码没有产生任何输出。

int main(){
int a;
string b;
cin>>a;
while(a){
    b+=(a%10);
    a/=10;
    }

cout<<b;
return 0;
}

输入 -

789


预期输出

987

但我没有得到任何答案。 P.S-我在代码中使用了所有必需的头文件。

1 个答案:

答案 0 :(得分:5)

您无法将int添加到string(或者更确切地说,在这种情况下您不应该这样做)。您需要to_string将int转换为字符串,以便+=运算符充当串联:

#include <iostream>
#include <string>
using namespace std;
int main(){
    int a;
    string b;
    cin>>a;
    while(a){
        b+=std::to_string(a%10);
        a/=10;
    }
    cout<<b;
    return 0;
}

Demo

发生了什么事?

std::stringoperator+=可以允许快速连接。您可以连接另一个字符串。通过重载选择了哪个版本的串联。当您尝试string += int时,选择了char重载(int转换为char),因此随机垃圾会附加到您的字符串而不是您想要的内容。