【问题标题】:Adding one character to string在字符串中添加一个字符
【发布时间】:2012-06-10 00:20:45
【问题描述】:

在 C++ 中:

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

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

如果我想添加0x0ii 是介于 0 和 9 之间的未签名的int),我该怎么办?

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

【问题讨论】:

  • text的类型是什么?你想完成什么?
  • @dirkgently:文本是一个字符串。所以我也想添加字符串(即增加一个字符)0i 以十六进制给出的字符。

标签: c++ string concatenation


【解决方案1】:

你可以直接做

text += (char)i;

因为0x0i == i 如果i 介于 0 和 9 之间。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 感谢您的回答!我会调查的。
    【解决方案3】:

    您应该生成它的 ASCII 值。 '0' 是 48,'9' 是 9 + 48

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

    如果i 是一个多位数字,您可以将其解析为数字并使用相同的技术生成其相等的字符串。

    【讨论】:

    • 他不想要'i',他想要i,所以不需要加到48。这就是为什么他的样本是text += (char)0x01,而不是text += (char)0x01+48
    • 如果你是对的,那么这个问题有什么意义呢?我认为他的前两行是不正确的。他想连接字符,但他的十六进制数字表明你是对的。
    猜你喜欢
    • 2013-10-27
    • 2011-04-22
    • 2020-04-13
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多