以简单的格式“ c:\ files \ sample.txt”从用户读取文件路径

时间:2019-03-08 05:42:16

标签: c++ string

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

<input type="text" 
       name="myArray[{{ nthRow }}][description][{{ language.language_id }}][name]" 
       value="{{ myArray.description[language.language_id].name }}"
       class="form-control" 
/>

但是在尝试使用path="c:\files\sample.txt" 访问时 找不到文件。

所以我用file.open("c:\files\sample.txt");来更改path.replace(path.begin(),path.end(),"\\","\\\\"),但是不起作用。

救救我!

1 个答案:

答案 0 :(得分:0)

您似乎知道

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甚至不是合法的字符序列。

转义序列用于字符串文字中,以表示否则很难编写的字符。例如,您不能轻易将"放在字符串文字中,因为它会结束字符串,因此存在转义序列\"可以让您执行此操作。同样,由于使用反斜杠字符来开始转义序列,因此转义序列\\代表反斜杠字符本身。

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