2012-05-03 6 views
0

Я хотел бы написать новую строку со строкой в ​​файле при вызове функции writeToFile. Это возможно без очистки предыдущей строки или всего txt?Предыдущие строки очищаются от потока

void writeToFile(string str) { 
    ofstream fileToWrite; 
    fileToWrite.open("C:/Users/Lucas/Documents/apps/resultado.txt"); 
    if(fileToWrite.good()) { 
     //write the new line without clearing the txt 
       //fileToWrite << str won't work for this reason 
    } 
    fileToWrite.close(); 
} 

ответ

2

Да. Посмотрите std::ios_base::ate и std::ios_base::app.

void write_to_file(std::string const &str) { 
    std::ofstream fileToWrite("C:/Users/Lucas/Documents/apps/resultado.txt", 
           std::ios_base::app); 
    fileToWrite << str << "\n"; 
} 

В этом случае разница между ними не имеет значения, но ios_base::ate означает, что при открытии файла, он расположен в самом конце, так что вы пишете добавляются в конец - но если вы хотите, вы можете искать более ранние части файла и перезаписывать то, что там. С ios_base::app, прежде чем вы начнете писать, он автоматически будет искать конец, поэтому любая запись, которую вы делаете, добавляется до конца, а не перезаписывает любые существующие данные.

Смежные вопросы