简单的c ++程序,它为字符串添加一个char字节。结果长度在输出中是错误的。
#include <iostream>
#include <string>
int main(){
char x = 0x01;
std::string test;
test = x+"test";
std::cout << "length: " << test.length() << std::endl;
std::cout << "test: " << test << std::endl;
return 0;
}
输出:
length: 3
test: est
我在字符串前面添加一个类型字节,因为我将通过套接字发送此数据,而另一方有一个需要知道要创建的对象类型的工厂。
答案 0 :(得分:4)
1 + "test" = "est" // 1 offset from test
所以你得到了正确答案。
+---+---+---+---+---+
| t | e | s | t | \0|
+---+---+---+---+---+
+0 +1 +2 +3 +4
你想要的可能是:
std::string test;
test += x;
test += "test";
答案 1 :(得分:0)
您没有像您认为的那样将char
与std::string
连在一起。这是因为"test"
实际上是文字const char*
,因此当您向其添加x
时,您只是在做指针算术。你可以替换
test = x + "test";
与
test = std::to_string(x) + "test";
然后是你的output will be
length: 5
test: 1test