C++ 将字符附加到 std::字符串 from int.
C++ Append character to std::string from int
我从键盘上得到了一个整数字符:
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
)会更明智。