C++ 字符串 : How to replace unescaped backslash?

标签 c++ string escaping stdstring backslash

<分区>

我正在阅读一些日志文件。 Windows 的日志包含类似 C:\some\path 的路径。

当我使用 std::getline 读取时,我得到一个包含未转义反斜杠的字符串。如何用正斜杠替换它们?

我试过了

std::replace(str.begin(), str.end(), '\\', '/');

但结果看起来像 C:somepath 而不是 C:/some/path

如何将 \ 替换为 /\\

此字符串随后用于构建 JSON 对象,因此不替换反斜杠会导致无效的 JSON 对象。

最佳答案

您尝试的 std::replace 调用是完全有效的,应该完全按照您的意愿执行,因此结果字符串不包含任何斜线的唯一原因是没有斜线任何类型的开始。

我建议使用调试器来确定您的字符串在其整个生命周期中发生了什么

关于C++ 字符串 : How to replace unescaped backslash?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39417782/

相关文章:

c++ - qmake : Build library without the symlinks and 'lib' prefix

c++ - 多个 DLL 的问题

c++ - VS 2012 的全新安装不会构建默认控制台应用程序 : Missing SDKDDKVer. h(和 stdio.h/CRT)

python - 如何将字符串数字转换为列表中的整数?

c - C中字符串的所有可能组合

php - 仅返回字符串开头的大写字母的函数?

c++ - std::optional::value_or() - 惰性参数评估

linux - BASH =~ 包含子串 : "+" or a regex character behavior

c - 在 Gracenote GNSDK 脚本中转义双引号

php - 如何在PHP中转义仅 "'”?