使用特定路径打开目录
请注意,directories(或“文件夹”)对于C++ 11或C++ 14标准是未知的。 C++ 17有std::filesystem
名称空间<filesystem>
标准头。
还要注意对Windows在file 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 !检查针对输入分析失败。
不错的答案,只是一个可能的陷阱笔记:Windows有一个当前目录**每个驱动器**,所以写'D:下载\\样品。txt'是相对于驱动器'D'上当前目录的路径。更好地编写'D:\\ downloads \\ sample.txt'。 –
@FelixPalmen:第一个代码片段说的那个注释。 –
@FelixPalmen:另外,即使MS-DOS也有一个当前目录*每个驱动器*。 –
这个问题很不清楚。你只是想知道如何[打开一个文件](http://www.cplusplus.com/reference/fstream/fstream/open/)?顺便说一句,这与你如何在[tag:c]中做的很大不同,所以请不要添加不相关的标签! –
你看起来很困惑。文件路径不是* URL。 –