【问题标题】:how to print file to a differnt folder如何将文件打印到不同的文件夹
【发布时间】:2017-06-10 01:36:50
【问题描述】:
std::string file = "Cell.txt";
myfile.open (file);

在当前程序文件夹中创建一个文件。我不希望文件与正在编写它们的程序混在一起。

std::string file = "Cell\\Cell.txt";

什么都不做

std::cout << file << '\n';

打印 Cell\Cell.txt

我什至尝试过

std::string file = "\\Cell\\Cell.txt";

没想到会这样,但还是尝试了

std::string file = "\\\\Cell\\\\Cell.txt";

我以前做过,网上什么都帮不上

【问题讨论】:

  • 文件路径必须存在才能打开文件。 Check out this thread.
  • 不使用windows
  • 文件夹单元格确实存在。运行程序,制作,运行程序,删除它,尝试不同的东西,......
  • 考虑使用 c++17 中的新文件系统库(或旧版本标准中的实验性文件系统库)来执行构建路径和创建目录等操作。

标签: c++ file directory


【解决方案1】:

你说你没有使用 windows,但是你创建了这样的路径:

std::string file = "Cell\\Cell.txt";

这不是名为Cell 的目录中名为Cell.txt 的文件,而是名为Cell\Cell.txt 的文件,因为反斜杠路径分隔符是windows 主义,在其他操作系统下它们是目录的一部分或文件名。请改用正斜杠:Cell/Cell.txt

更好的是,使用新的 C++ 文件系统库以独立于平台的方式构建路径,并完全避免此问题。

#include <experimental/filesystem>
#include <iostream>

namespace fs = std::experimental::filesystem;

int main()
{
  auto path = fs::path("Cell") / fs::path("Cell.txt");

  std::cout << path.string() << std::endl;
}

这将输出

细胞\细胞.txt

在windows下和

单元格/Cell.txt

例如在 linux 下。您也可以使用create_directory 创建目录。

(注意:这在 vs2017 和可能 2015 下的 windows 上开箱即用,但在 g++ 下,您需要在编译时包含一个额外的库,如下所示:g++ -std=c++14 -O2 -Wall -pedantic main.cpp -lstdc++fs

【讨论】:

  • 无法让#include 工作,但将 \ 更改为 / 并手动创建文件夹,工作
  • @michaeleric 您使用的是哪个编译器?名称和版本,如果可以的话。
  • 嗯,NetBeans 不确定 NetBeans 8.2 Patch 2 不知道在哪里寻找它正在使用的编译器
  • @michaeleric 它可能在下面使用 g++,所以没有理由无法工作。我不熟悉 netbeans 的使用和配置,所以我无法建议您如何实际使用它。您可以尝试就此提出一个单独的问题。
猜你喜欢
  • 2016-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 2017-08-07
  • 1970-01-01
相关资源
最近更新 更多