如何用空格C ++替换^ M.

时间:2016-04-21 06:54:32

标签: c++ string boost std

我在C ++中编写代码,其中我有一个类似于

的输入字符串
  

\ n {^ M“id”:“two”,^ M“guid”:   “49709bb3-7444-40bf-9032-cc65e36d26f5”,^ M“isActive”:true,^ M
  “balance”:“1645.00”,^ M“picture”:“http://placehold.it/32x32”,^ M
  “年龄”:28,^ M“名称”:“Elvira Odom”,^ M“性别”:“女性”,^ M
  “公司”:“Homelux”,

我无法控制输入字符串。

我需要将存储在p1f0-> str中的这个字符串打印到一个文件中并将其解析用于其他目的。

但^ M字符在解析时弄乱了东西,因此,我想摆脱它。

所以,为了摆脱^ M字符,我正在做这个并且它不起作用 -

struct specialStr {
  uint32 len;
  char str[0];
}
specialStr p111;
p111....
....
std::string raww = (char*) p111->str;
boost::replace_all( raww, "^M", " ");
strncpy(p111->str, raww.c_str(), sizeof(raww));
p111->len = (uint32) (raww.size());
p111->str[p111->len - 1] = 0;

但似乎根本没有效果。

有人可以告诉我这里我做错了什么吗? 感谢

1 个答案:

答案 0 :(得分:2)

序列^M是编辑器显示控制代码M,ASCII代码13:CARRIAGE RETURN的方式。

您可以在C或C ++中轻松将其编码为"\r"