【问题标题】:linux path in fstreamfstream中的linux路径
【发布时间】:2011-10-16 03:36:28
【问题描述】:

我尝试创建一个新文件并将其保存在 LINUX 上当前文件夹的子目录中

路径(转换)应该类似于 markus/123456,其中 markus 是(现有的)子目录,而 123456 是不存在的文件

奇怪的是:当我不使用子目录时它可以工作:

"123456" 工作并在当前目录中创建一个文件

"markus/123456" 不起作用,什么也不做......

ofstream handle;
string convert = "1234";
convert=name +"/"+ convert;
cout << convert<< endl;
handle.open(convert.c_str(),ios::out); // dont works with subdirectory in string
handle<<message;
handle.close();

注意:我使用的是 linux 而不是 windows。我需要 linux (3.0.0-12-generic-pae) 的解决方案。

编辑: 感谢其中一个赞扬,我发现它是一个正确的问题。我发布了我如何创建文件夹的代码:

user::user(string aaa)
{
    name=aaa;
    mkdir(name.c_str(),0600);

}

注意:我也用 0666 尝试过,但没有成功。还是不知道怎么弄好

【问题讨论】:

  • 它产生什么输出?你得到什么错误?
  • 请将您的程序缩减为一个最小的、完整的、可编译的示例程序。在这个过程中,你很可能会自己发现问题。如果您不这样做,完整的程序将使我们能够更快地找到问题。请参阅sscce.org 了解更多信息。
  • 它不会在终端上产生任何输出。 ofstream 只是无法打开。如果我在它拒绝之后使用handle.isopen();。如果我不使用它只是成功的路径
  • 所以它应该可以工作。这表明您要么拼写错误,从错误的目录运行它(因为路径将与当前工作目录相对(假设第一个字符不是'/')),要么没有对该目录的写权限。你检查过当前的工作目录吗?试试getcwd()看看它输出了什么。
  • 感谢您的提示!这是一个正确的问题。我删除了目录并手动创建了它。之后我就可以写作了。 mkdir(name.c_str(),0600); 是之前创建目录的命令。 name 是类的一部分,与我之前的示例相同。这部分也不能不同,因为我在同一目录中创建目录和文件(在“123456”示例中)。

标签: c++ linux file-io


【解决方案1】:
mkdir(name.c_str(),0600);

这是错误的。试试

mkdir(name.c_str(), 0700);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-02
    • 2010-09-08
    • 2020-05-18
    相关资源
    最近更新 更多