2017-06-17 118 views
-4

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

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

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

+1

这个问题很不清楚。你只是想知道如何[打开一个文件](http://www.cplusplus.com/reference/fstream/fstream/open/)?顺便说一句,这与你如何在[tag:c]中做的很大不同,所以请不要添加不相关的标签! –

+1

你看起来很困惑。文件路径不是* URL。 –

回答

1

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

还要注意对Windowsfile paths目录分隔符是反斜杠\(但POSIX和Linux是一个斜杠/)。某些运行时系统(和C++标准库)可能会在Windows上的文件路径中将正斜杠/转换为反斜杠\。检查您的文档以查看您的实施是否执行了该转换。

许多架构库(包括Qt & POCO & 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(但是URL为起始file:方案通过其文件路径指定本地文件)。 AFAIK你需要一些外部库来处理这样的URL。如果您坚持提供完整的URL,您最好在实践中使用一些HTTP客户端库(例如libcurl),因为大多数URL都是针对HTTP的。

你以后可能会测试该输入流是否正确打开:

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

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

int x=0; 
myinput >> x; 

你可以在以后使用的一元operator !检查针对输入分析失败。

+0

不错的答案,只是一个可能的陷阱笔记:Windows有一个当前目录**每个驱动器**,所以写'D:下载\\样品。txt'是相对于驱动器'D'上当前目录的路径。更好地编写'D:\\ downloads \\ sample.txt'。 –

+0

@FelixPalmen:第一个代码片段说的那个注释。 –

+0

@FelixPalmen:另外,即使MS-DOS也有一个当前目录*每个驱动器*。 –