【问题标题】:Error in opening an output stream打开输出流时出错
【发布时间】:2017-04-21 01:40:36
【问题描述】:

在我的代码中,我打开一个输出流并将数据附加到文件的末尾。如果没有这样的文件,流应该创建一个,但问题是它没有。

这里是sn-p的代码:

char output_file[100];
strcpy(output_file, predicate.c_str());            
ofstream output_file_ptr1; 

output_file_ptr1.open(output_file,ios::out | ios::app | ios::binary );

if(output_file_ptr1.is_open()){

        output_file_ptr1 << subject <<" " << object <<"\n";
        output_file_ptr1.close();
}

else{
            printf("Error opening out file \n");
            return -1;
}

主语、宾语和谓语是我之前创建的可变字符串。

知道它不会创建文件吗? + 将数据附加到文件末尾对我来说非常重要。

更新: 谓词是我需要的确切文件名,但它不是通常的命名,即

http://www.w3.org/1999/02/22-rdf-syntax-ns#type>

是一个例子

【问题讨论】:

  • 您不需要临时的output_file 数组。从 C++11 开始,您可以直接使用 std::string 作为文件名,如果您使用的是较旧的编译器和标准库,只需在 open 调用中直接传递 predicate.c_str()
  • 更多和你的问题有关,predicate的值是多少?是绝对路径还是相对路径?路径中的所有目录都存在吗?您是否有权在要创建文件的目录中写入?
  • @Someprogrammerdude 谢谢,但这不是这里的严重问题..顺便说一句,我确实尝试了你的建议,但它没有解决问题
  • @Someprogrammerdude 它是文件名本身.. 我的文件名就像“w3.org/1999/02/22-rdf-syntax-ns#type>”
  • 正确缩进你的代码! stackoverflow.com/questions/17337602/… 学习查找错误信息。 Doc

标签: c++ ofstream


【解决方案1】:

&lt;w3.org/1999/02/22-rdf-syntax-ns#type&gt; 等值在大多数环境中不是有效的文件名。 Unix 风格的操作系统(例如 Linux)不支持文件名中的“/”(除非目录结构匹配)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 2019-06-26
    相关资源
    最近更新 更多