在C++中,如何在不使用to_string函数的情况下向字符串追加整数?

ltskdhd1  于 2023-03-14  发布在  其他
关注(0)|答案(4)|浏览(159)

我使用to_string函数将一个整数附加到字符串1,它按预期工作,但未使用to_string函数完成相同任务,答案与上一个案例不同,逻辑上似乎正确,但实际上它是如何工作的,我无法得到它?
具体来说,在不使用to_string()函数的情况下,如何将整数附加到字符串中?

int main()
{
    int a[] = {13, 13};
    string str1, str1Image;
    string str2, str2Image;
    str1 = str2 = "";

    str1 += a[0];  //---------1
    str1 += a[1];

    str1Image = str1;
    reverse(str1.begin(), str1.end());
    if(str1 == str1Image)
        cout << "Both str1 and str1Image are same" << endl; 
    else
        cout << "Not same" << endl;

    str2 += to_string(a[0]);
    str2 += to_string(a[1]);

    str2Image = str2;
    reverse(str2.begin(), str2.end());
    if(str2 == str2Image)
        cout << "Both str2 and str2Image are same" << endl;
    else
        cout << "Not same" << endl; // here str2 = 3131, str2Image = 1313

}
ozxc1zmp

ozxc1zmp1#

str1 += 13将值为13的字符附加到字符串。该字符前后两次相同。在许多系统中,13是回车符。
str2 += std::to_string(13);将文本"13"添加到字符串中。前后两次添加的文本不相同。

4c8rllxm

4c8rllxm2#

使用std::stringstream

#include <iostream>
#include <sstream>
int main()
{
    std::stringstream ss;
    std::string s{"hello"};
    int i{10};
    ss << s << i;
    std::string si{ss.str()};
    std::cout << si << '\n';
}
pieyvz9o

pieyvz9o3#

std::stringoperator+=在给定整数时向字符串追加字符。
示例:

#include <iostream>
#include <string>

int main()
{
    int a[] = {72, 105};
    std::string str1 = "";

    str1 += a[0];
    str1 += a[1];

    for (const char& c : str1) {
        std::cout << (int)c << '\n';
    }
    std::cout << str1 << '\n';
    return 0;
}

输出:

72
105
Hi
disbfnqx

disbfnqx4#

这些声明

str1 += a[0];  //---------1
str1 += a[1];

如果在字符串中看不到数字13时输出结果字符串,则将使用内部代码表示形式13追加两个字符。
如果要写就不一样了

str1 += std::to_string( a[0] );  //---------1
str1 += std::to_string( a[1] );

str1 += "13";  //---------1
str1 += "13";

此代码片段

str1 += a[0];  //---------1
str1 += a[1];

str1Image = str1;
reverse(str1.begin(), str1.end());
if(str1 == str1Image)
    cout << "Both str1 and str1Image are same" << endl; 
else
    cout << "Not same" << endl;

作品输出

Both str1 and str1Image are same

因为字符串中存储了什么字符并不重要。
代码13表示回车符。

相关问题