2013-10-11 2 views
-2

Я пытаюсь разобрать .html файл, чтобы найти определенный тег, а затем, начиная с позиции я добрался до записи в файл:станд :: fstream не записывает файл .html

std::fstream file; 
file.open(".\\img\\file.html", std::fstream::in || std::fstream::out); 

if (file.is_open()) 
{ 
    char s[1024]; 
    bool f = false; 
    while(f != true) 
    { 
     file.getline(s,1024); 
     if (strstr(s,"<table>") != NULL) 
      f = true; 
    } 

    file << "Something"; 
} 
else 
    printf("Error opening file.html\n"); 

из debug Я могу подтвердить, что я нахожу нужный тег, но ничего не записывается в файл, что я делаю неправильно?

+0

Сделать жизнь проще с помощью ['libxml ++'] (http://libxmlplusplus.sourceforge.net/docs/manual/html/) – P0W

+0

Спасибо за отзыв, но мой вопрос не в синтаксическом анализе. Моя проблема в том, что я не могу записать в .html-файл. – user2837795

+1

вы не можете просто перейти к какой-либо части XML-файла и вставить элемент, ожидая, что оставшийся контент будет изменен магией, чтобы сделать пространство с использованием основного потока io. Для этого вам нужно использовать инструментарий XML. [См. Этот вопрос о том, как выбрать правильный вариант для ваших нужд] (http://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c/9387612#9387612). – WhozCraig

ответ

2
file.open(".\\img\\file.html", std::fstream::in || std::fstream::out); 

должен быть

file.open(".\\img\\file.html", std::fstream::in | std::fstream::out); 

вы не хотите логического оператора или || но побитовое или |

Но как говорили другие комментаторы, используя оператор << просто переписать, что часть вашего файла, если вы хотите вставить что-то, что вам нужно, чтобы скопировать все после точки вставки. Вероятно, лучше всего использовать библиотеку, например предлагаемую, или создать временный файл и изменить оригинал после того, как все изменения будут выполнены.

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