在 C++ 中定义 std::string 没有转义字符
Posted
技术标签:
【中文标题】在 C++ 中定义 std::string 没有转义字符【英文标题】:Define std::string in C++ without escape characters 【发布时间】:2012-05-08 15:23:01 【问题描述】:将未转义的字符序列输入到std::string
最简单的方法是什么?
代替
std::string st = "C:\\program files\\myFile.txt";
类似:(由于转义字符而无法正常工作)。
std::string st = "C:\program files\myFile.txt";
【问题讨论】:
你建设得怎么样了?能否将内容存储在.txt
文件中并添加Makefile
规则以将其转换为.h
文件?
@MikeSamuel,我正在使用 Visual Studio。
投反对票的人可以解释问题中的问题吗?
【参考方案1】:
你可以用 C++11 raw string literals:
std::string st = R"(C:\program files\myFile.txt)";
【讨论】:
太棒了。 LR 表示宽字符。语法起初让我感到困惑,因为字符串开头和结尾的分隔符是双字符序列......“(......然后......)” Ew 这种语法很恶心。将 () 放在引号中是谁的好主意?而替代版本 R"delimiter()delimiter" 更糟糕。【参考方案2】:对于文件名,只需使用(前进?后退?)另一个方向的斜线。它也适用于 Windows:
std::string st = "C:/program files/myFile.txt";
【讨论】:
@chris:谢谢,但你的努力白费了。我会再次忘记,因为我的大脑认为记住它不够重要。 这并不总是适用于某些文件系统驱动程序,或者如果路径长于 MAX_PATH 并且使用了扩展路径前缀 @Asu:你为什么这么说? 对不起,我弄混了。我把/
和 `\` 混在一起了。
很抱歉,这不是 OP 所要求的。以上是关于在 C++ 中定义 std::string 没有转义字符的主要内容,如果未能解决你的问题,请参考以下文章
在 C++ 中比较两个 std::string 时的未定义行为 [关闭]
与静态库中的 std::string 相关的 C++ 未定义符号
为啥 C++ 标准中没有 std::string_view 类型的参数的 std::basic_string 类的构造函数[重复]