在C++:增加一个字符的字符串
如果我想补充0x01
字符串文字,我会做:text += (char)0x01
;
如果我想将0x02
添加到字符串文本中,我会这样做:text += (char)0x02
;
如果我想添加0x0i
(分别是i
是0到9之间的一个未知的int
),我该怎么办?
编辑:我可能不是很清楚。所以通过0x01,我的意思是以十六进制给出的字符为01.所以在上面如果我是整数(十进制)说3,那么我想添加0x03(所以这不是十进制给出的字符为48 + 3)。
在C++:增加一个字符的字符串
如果我想补充0x01
字符串文字,我会做:text += (char)0x01
;
如果我想将0x02
添加到字符串文本中,我会这样做:text += (char)0x02
;
如果我想添加0x0i
(分别是i
是0到9之间的一个未知的int
),我该怎么办?
编辑:我可能不是很清楚。所以通过0x01,我的意思是以十六进制给出的字符为01.所以在上面如果我是整数(十进制)说3,那么我想添加0x03(所以这不是十进制给出的字符为48 + 3)。
你应该生成字符的ASCII值。 '0'
是48,并且'9'
是9 + 48
text += (char)(i + 48) ;
i
如果是一个多位数,你可以解析它到它的位数,并使用相同的技术来生成其等于字符串。
他不想要'我',他想'我',所以没有必要添加到48.这就是为什么他的样本是'text + =(char)0x01' ,而不是'text + =(char)0x01 + 48' –
如果你是对的,那么这个问题有什么意义呢?我认为他的前两行是不正确的。他想连接字符,但是他的十六进制数字表明你是对的。 –
@LuchianGrigore:确实....我想 – Thomas
另一种可能性 - 您可以改用push_back
。由于需要字符串的char_type
作为它的参数类型,你并不需要一个明确的转换:
text.push_back(i);
凭心而论,我想补充一点,你并不真的需要+=
有明确的转换要么。只需text += i;
将正常工作。例如:
std::string text;
for (int i=0; i<9; i++)
text += i;
无论使用哪种text += i;
或text.push_back(i);
,这将产生一个包含字符串: “\ X00 \ X01 \ X02 \ X03”。
感谢您的回答!我会研究这一点。 – Thomas
'text + =(char)i'。 – Lalaland
'text'的类型是什么?你想达到什么目的? – dirkgently
@dirkgently:text是一个字符串。所以我想添加字符串(即,使它长一个字符)以十六进制给出的字符0i。 – Thomas