2012-06-10 128 views
0

在C++:增加一个字符的字符串

如果我想补充0x01字符串文字,我会做:text += (char)0x01;

如果我想将0x02添加到字符串文本中,我会这样做:text += (char)0x02;

如果我想添加0x0i(分别是i是0到9之间的一个未知的int),我该怎么办?

编辑:我可能不是很清楚。所以通过0x01,我的意思是以十六进制给出的字符为01.所以在上面如果我是整数(十进制)说3,那么我想添加0x03(所以这不是十进制给出的字符为48 + 3)。

+3

'text + =(char)i'。 – Lalaland

+0

'text'的类型是什么?你想达到什么目的? – dirkgently

+0

@dirkgently:text是一个字符串。所以我想添加字符串(即,使它长一个字符)以十六进制给出的字符0i。 – Thomas

回答

4

您可以直接做

text += (char)i; 

因为0x0i == i如果i是9介于0和

+0

啊......我现在得到你的答案。我很愚蠢..... – Thomas

0

你应该生成字符的ASCII值。 '0'是48,并且'9'是9 + 48

text += (char)(i + 48) ; 

i如果是一个多位数,你可以解析它到它的位数,并使用相同的技术来生成其等于字符串。

+1

他不想要'我',他想'我',所以没有必要添加到48.这就是为什么他的样本是'text + =(char)0x01' ,而不是'text + =(char)0x01 + 48' –

+0

如果你是对的,那么这个问题有什么意义呢?我认为他的前两行是不正确的。他想连接字符,但是他的十六进制数字表明你是对的。 –

+0

@LuchianGrigore:确实....我想 – Thomas

1

另一种可能性 - 您可以改用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”。

+0

感谢您的回答!我会研究这一点。 – Thomas