2016-12-06 8 views
0

В моем коде я открываю выходной поток и добавляю данные в конец файла. Если нет такого файла, поток должен создать его, но проблема в том, что это не так.Ошибка при открытии выходного потока

вот фрагмент кода:

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: предикат является точным именем файла, что мне нужно, но это не обычного именованием т.е.

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

является примером

+0

Вам не нужен временный массив 'output_file'. Начиная с C++ 11 вы можете использовать 'std :: string' непосредственно в качестве имени файла, и если вы используете старый компилятор и стандартную библиотеку, просто передайте' predicate.c_str() 'непосредственно в' open'. –

+0

Подробнее о вашей проблеме, какова ценность 'предикат'? Это абсолютный или относительный путь? Все ли каталоги на пути существуют? Есть ли у вас право писать в каталоге, где вы хотите создать свой файл? –

+0

@Someprogrammerdude спасибо, но это не остро проблема здесь .. BTW Я действительно пробовал то, что вы предложили, но это не решило проблему. – Salma

ответ

1

Значения такого поскольку <w3.org/1999/02/22-rdf-syntax-ns#type> не является допустимым именем файла в большинстве сред. Операционные системы в стиле Unix (например, Linux) не поддерживают «/» внутри имени файла (если не соответствует структура каталогов).

+0

решил проблему .. спасибо – Salma