strtok并用C ++替换子字符串

时间:2008-11-14 04:55:25

标签: c++ string strtok

如果我有一个字符串“12 23 34 56”

将其更改为“\ x12 \ x23 \ x34 \ x56”的最简单方法是什么?

3 个答案:

答案 0 :(得分:2)

string s = "12 23 34 45";
stringstream str(s), out;
int val;
while(str >> val)
    out << "\\x" << val << " "; // note: this puts an extra space at the very end also
                               //       you could hack that away if you want

// here's your new string
string modified = out.str();

答案 1 :(得分:2)

你的问题含糊不清,取决于你真正想要的东西:

如果你想要的结果与:char s [] = {0x12,0x34,0x56,0x78,'\ 0'}: 然后你可以这样做:

std::string s;
int val;
std::stringstream ss("12 34 56 78");
while(ss >> std::hex >> val) {
   s += static_cast<char>(val);
}

之后,你可以用它来测试它:

for(int i = 0; i < s.length(); ++i) {
    printf("%02x\n", s[i] & 0xff);
}

将打印:

12
34
56
78

否则,如果你希望你的字符串字面上是“\ x12 \ x23 \ x34 \ x56”,那么你可以做Jesse Beder所建议的。

答案 2 :(得分:0)

你可以这样做:

foreach( character in source string)
{
  if 
    character is ' ', write ' \x' to destination string
  else 
    write character to destination string.
}

我建议使用std :: string但这可以通过首先检查字符串来计算多少个空格然后创建新的目标字符串x3来实现。