В моем коде я открываю выходной поток и добавляю данные в конец файла. Если нет такого файла, поток должен создать его, но проблема в том, что это не так.Ошибка при открытии выходного потока
вот фрагмент кода:
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;
}
субъект, объект и предикат являются переменными строки, которые я создал ранее.
Любая идея не создает файл? + для меня очень важно, чтобы данные были добавлены в конец файла.
Update: предикат является точным именем файла, что мне нужно, но это не обычного именованием т.е.
является примером
Вам не нужен временный массив 'output_file'. Начиная с C++ 11 вы можете использовать 'std :: string' непосредственно в качестве имени файла, и если вы используете старый компилятор и стандартную библиотеку, просто передайте' predicate.c_str() 'непосредственно в' open'. –
Подробнее о вашей проблеме, какова ценность 'предикат'? Это абсолютный или относительный путь? Все ли каталоги на пути существуют? Есть ли у вас право писать в каталоге, где вы хотите создать свой файл? –
@Someprogrammerdude спасибо, но это не остро проблема здесь .. BTW Я действительно пробовал то, что вы предложили, но это не решило проблему. – Salma