Как мне разобрать текстовый файл, который стирает все строки, кроме того, что мне нужно? - PullRequest
0 голосов
/ 09 февраля 2011

Я хочу проанализировать текстовый файл, чтобы получить то, что я хочу, и создать еще один текстовый файл в C ++. У меня есть текстовый файл, который выглядит примерно так:

User :

Group : 

Comment1 :

Comment2 :

*** Label ***

ID : Nick

PASS : sky123

Number ID : 9402

*** End of Label ***

######################################

И продолжается. Я в основном хочу создать новый текстовый файл, который оставляет все строки, содержащие двоеточие (:), и стереть остальные, такие как "* Label *", и сохранить результат в новом текстовом файле. Ответ на этот текстовый файл будет

User :

Group :

Comment1 :

Comment2 :

ID : Nick

PASS : sky123

Number ID : 9402

Как мне сделать это простым способом? Большое спасибо.

Ответы [ 5 ]

3 голосов
/ 09 февраля 2011

В C ++ с fstreams:

ifstream input("input.txt");
ofstream output("output.txt");

string line;

while (getline(input, line)) {
    if (line.find(":") != string::npos) {
        output << line << "\n";
    }
}
2 голосов
/ 09 февраля 2011

Я не проверял это, но вы поняли.

void foo(ifstream& ifs, ofstream& ofs)
{
    while ( !ifs.eof() )
    {
        string line;
        getline(ifs, line);
        if (line.find(":") != string::npos)
            ofs << line;
    }
}
1 голос
/ 09 февраля 2011

Самый простой подход, который я могу придумать, состоит в том, чтобы читать в текстовом файле строку за строкой, сохраняя только те строки, которые вы хотите.После завершения чтения откройте отдельный файл для записи и запишите сохраненные строки.Это не C ++, но я написал некоторый псевдо-код для иллюстрации.

while(line in source file)
{
    if(wantline)
       store the line
}
for(stored lines)
   write line to destination file
0 голосов
/ 09 февраля 2011

Ну, я не пишу на C ++, и я не уверен, что вам нужна помощь с языком, но вот простой подход в резюме:

Загрузите текстовый файл в строку изатем разбейте строку на массив символа новой строки, чтобы у вас была 1 строка текстового файла на каждое значение массива.Затем выполните итерацию по каждому элементу массива.Используя этот метод, вы можете проверить содержимое отдельной строки и использовать сравнение строк, сопоставление регулярных выражений и т. Д., Чтобы определить, хотите ли вы сохранить / изменить эту строку.Когда вы закончите, вы можете просто сохранить новую строку в текстовом файле.

В качестве альтернативы, вы можете использовать глобальный поиск / замена со сравнением строк, регулярное выражение и т. Д., Чтобы применить изменения ко всему документу сразу, ноэто требует более глубоких знаний и применения регулярных выражений и может быть непрактичным, учитывая размер документа.

0 голосов
/ 09 февраля 2011

По большому счету, все, что вам нужно сделать, это в цикле, проверить для каждой строки, есть ли у нее символ (:), если он есть, добавьте его в строку.В конце просто сохраните эту строку в новом текстовом файле.

Вот учебник о том, как управлять файлами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...