【发布时间】: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