首页 > 解决方案 > 以简单格式“c:\files\sample.txt”从用户读取文件路径

问题描述

我正在尝试以简单的格式从用户读取文件路径作为命令行,例如:

path="c:\files\sample.txt"

但是当尝试使用file.open("c:\files\sample.txt"); 未找到的文件进行访问时。

所以我用path.replace(path.begin(),path.end(),"\\","\\\\")它来改变\ to \\但它不起作用。

帮我!!

标签: c++string

解决方案


如你所知

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

转义序列用于字符串文字中以表示难以编写的字符。例如,您不能轻易地"输入字符串文字,因为它会结束字符串,因此\"存在转义序列可以让您这样做。同样,由于反斜杠字符用于启动转义序列,因此转义序列\\代表反斜杠字符本身。

这些规则仅适用于字符串文字,如果您从用户那里读取字符串,则无需用双反斜杠替换反斜杠,这是没有意义的,因为单反斜杠是您在文件路径中想要的。只是在字符串文字中获取单个反斜杠的方法是编写双反斜杠。


推荐阅读