使用特定路径打开目录

时间:2017-06-17 07:29:58

标签: c++

如何使用C ++中的特定路径在本地计算机中打开文件的位置?

路径输入: D:downloads/sample.txt

输出:执行后,文件应自动打开。

1 个答案:

答案 0 :(得分:1)

请注意,directories(或“文件夹”)对于C ++ 11或C ++ 14标准是未知的。 C ++ 17具有来自<filesystem>标准头的std::filesystem命名空间。

另请注意,在Windowsfile paths中的目录分隔符是反斜杠\(但在POSIX和Linux上它是正斜杠/)。某些运行时系统(和C ++标准库)可能会在Windows上的文件路径中将正斜杠/转换为反斜杠\。检查您的文档,看看您的实现是否进行了转换。

许多框架库(包括Qt&amp; POCO&amp; Boost)提供与目录,文件,路径和文件系统相关的抽象。

我没有Windows(我很高兴只在工作和家中使用Linux),但我想你可以通过D:downloads\sample.txt作为std::ifstream的路径。当然,你需要在文字字符串中转义反斜杠:

std::ifstream myinput("D:downloads\\sample.txt");

(我想downloads应该以大写Downloads开头,但是我让您检查一下,同样在法语系统上它可能是一个不同的目录Téléchargements但你应该检查;我建议使用一些绝对文件路径,如D:\Downloads\sample.txt;当然你需要在文字字符串中转义两个反斜杠)

请注意,文件路径不是URL(但使用file:方案启动的URL 通过其文件路径指定本地文件)。 AFAIK你需要一些外部库来处理这样的URL。如果您坚持提供完整的网址,那么您最好在实践中使用一些HTTP客户端库(例如libcurl),因为大多数网址都是针对HTTP的。

您稍后可能会测试输入流是否正确打开:

if (!myinput.is_opened())
    throw throw std::runtime("failed to open myinput");

然后你可以使用例如operator >>来解析它

int x=0;
myinput >> x;

您稍后可以使用一元operator !来检查输入解析失败。