从 Cstring 中删除 \x

Posted

技术标签:

【中文标题】从 Cstring 中删除 \\x【英文标题】:Remove \x from Cstring从 Cstring 中删除 \x 【发布时间】:2019-12-27 10:10:14 【问题描述】:

有已分配给 Cstring 的 Byte*。因此 Cstring 具有格式为 \xData\xData 的十六进制数据。 我想从 Cstring 中删除 \x。 已尝试删除功能,但没有奏效。谁能建议如何删除 \x。

【问题讨论】:

\x 转义是一种在源常量中表示不可打印控制字符的方法。实际的 Cstring 变量包含一系列字符,每个字符可能是可打印的,也可能是不可打印的。您面临的真正问题是什么? Cstring 有值\xData,我只想要数据部分如何得到? 请举例说明您拥有什么以及您想要什么。 我有 Cstring data =L"\x15\x16" 我想要的是 Cstring data = L"15 16" 所以从字符串中去掉所有“\\x”。你必须在字符串中使用\` to replace a `。 【参考方案1】:

回答提出的问题(尽管它很可能不会询问实际问题)。您可以通过调用CString::Replace 轻松地将CString 中的任何序列替换为另一个序列:

CStringW transform(CStringW source)

    source.Replace(L"\\x", L" ");
    return source.Trim();

这通过将所有出现的字符序列\x 替换为空格字符来转换源字符串,然后删除所有前导和尾随空白字符。这实现了this comment 中要求的行为。

【讨论】:

以上是关于从 Cstring 中删除 \x的主要内容,如果未能解决你的问题,请参考以下文章

我们可以删除 CString 末尾的空字符吗?

从 C++ 字符串中删除最后一个字符

从找到空格和标点符号的数组中删除字符[重复]

从字符串中修剪/删除制表符 ( "\t" )

CString的Trim()函数,是啥功能的?

从 CString 引用中获取 CString?