C++ 将字符附加到 std::字符串 from int.

C++ Append character to std::string from int

本文关键字:字符串 from int std 字符 C++      更新时间:2023-10-16

我从键盘上得到了一个整数字符:

int c = getch();

一个我想把它附加到字符串中,只有当它不是return

void somefunction()
{
    std::string str = "you pressed: ";
    int c;
    while ( 1 )
    {
        c = getch();
        if ( c == 10 ) break;
        char* ch;
        sprintf(ch,"%c",c);
        str += std::string(ch);
    }
}

但是,当somefunction的范围离开时,这会产生分割错误。我的意思是,当 str 的 dtor 被称为 ch 指针时,指向 的指针不再可用。

我该如何补救?

这比你想象的要容易得多:

str.push_back(c);

您遇到分段错误,因为您正在尝试将字符串sprintf到未知(尚未分配)内存中:

char* ch;
sprintf(ch,"%c",c);

代码的可能解决方法是将char* ch;替换为char ch[2];这将导致ch成为具有自动存储持续时间的静态分配数组。

但请注意,由于您是用C++编程的,因此使用std::string的流和方法比使用C样式(char*)字符串和C样式的函数(如sprintf)会更明智。