c++ - 以简单格式“c:\files\sample.txt”从用户读取文件路径
问题描述
我正在尝试以简单的格式从用户读取文件路径作为命令行,例如:
path="c:\files\sample.txt"
但是当尝试使用file.open("c:\files\sample.txt");
未找到的文件进行访问时。
所以我用path.replace(path.begin(),path.end(),"\\","\\\\")
它来改变\ to \\
但它不起作用。
帮我!!
解决方案
如你所知
path="c:\files\sample.txt";
不正确,应该是
path="c:\\files\\sample.txt";
(或正斜杠也可以)
path="c:/files/sample.txt";
但这也是不正确的
path="c:\files\sample.txt";
path.replace(path.begin(),path.end(),"\\","\\\\");
第二行用双反斜杠替换所有单反斜杠,但原始字符串中没有单反斜杠。
\f
是换页符的转义序列,甚至不是合法的字符序列。\s
转义序列用于字符串文字中以表示难以编写的字符。例如,您不能轻易地"
输入字符串文字,因为它会结束字符串,因此\"
存在转义序列可以让您这样做。同样,由于反斜杠字符用于启动转义序列,因此转义序列\\
代表反斜杠字符本身。
这些规则仅适用于字符串文字,如果您从用户那里读取字符串,则无需用双反斜杠替换反斜杠,这是没有意义的,因为单反斜杠是您在文件路径中想要的。只是在字符串文字中获取单个反斜杠的方法是编写双反斜杠。
推荐阅读
- python - 在下拉列表中显示 django 中的模型字段
- mysql - MYSQL 中的多个条目中选择一个单词
- javascript - 如何创建一个多重过滤功能来过滤掉多个属性?
- java - 为什么一些垃圾收集和 OOP 编程语言没有析构函数?
- reactjs - 允许任何 html 属性的打字稿类型
- linux - 在探测 MDIO 总线之前初始化第二个以太网 PHY 的时钟
- c++ - 如何使用带有 C++ 扩展名的 VSCode 中显示的参数获取调用 g++ 的命令?
- linux - 如何在 Heroku 测功机上安装 htop?
- javascript - 使用拖放时 appendChild 不起作用
- c# - Http-Server,监控路径/文件夹