как найти конкретную строку в файле (блокнот)
У меня следуйщая задача:
ввожу слово или код в консоль, программка считывает, находит в блокноте нужную строку записывает две переменные:
(1-я ту строку которую мы нашли благодоря слову или коду и
2-я следуйщая сторка после неё)
вот так вот.
у меня есть только проверка есть ли слово или код:
#include <iostream> #include <windows.h> #include <string.h> #include <fstream> using namespace std; int main() { char word[256], line[256], tmp[256]; char *buf = NULL; ifstream file; setlocale(0, ""); cout << "слово для поиска: "; cin.get(word, 256, '\n'); file.open("D:\\TRAN\\Lib6.txt", ios::in); if(!file) { cout<<"нет такого файла!!!!"<<endl; exit(1); } while (!file.eof()) { file.getline(line, 256, '\n'); strcpy(tmp, line); buf = strtok(tmp, " "); if (buf == NULL) { cout << "Ошибка" << endl; file.close(); system("pause"); exit(1); } if (strcmp(buf, word) == 0) { cout << line <<" : найдено совпадение" << endl; system("pause"); exit(0); } } cout << "нет подобных значений" << endl; file.close(); system("pause"); return 0; }
и просто вывод текста:
const int len = 300, strings = 6; const char ch = '\n'; char mass[len][strings]; ifstream fs("D:\\TRAN\\Lib6.txt", ios::in | ios::binary); if(!fs) return 1; for(int r = 0; r<strings; r++) { fs.getline(mass[r], len-1,ch); cout << "String " << r+1 << " = "<< mass[r] << endl; } fs.close();
а вот найти строку по слову, записать в переменную
эту строку и в другую переменную следуйщую строку не знаю как...
кажется двигаюсь не в том направлении :(
помогите пожалуйста.
Рекомендуем хостинг TIMEWEB
Стабильный хостинг, на котором располагается социальная сеть EVILEG. Для проектов на Django рекомендуем VDS хостинг.Вам это нравится? Поделитесь в социальных сетях!
Комментарии
Пожалуйста, авторизуйтесь или зарегистрируйтесь
- Akiv Doros
- 12 ноября 2024 г. 1:58
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:50баллов,
- Очки рейтинга-4
- molni99
- 26 октября 2024 г. 11:37
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:80баллов,
- Очки рейтинга4
- molni99
- 26 октября 2024 г. 11:29
C++ - Тест 004. Указатели, Массивы и Циклы
- Результат:20баллов,
- Очки рейтинга-10
Добрый день!
Вы не пробовали использовать std::string для строк?
Это было бы несколько проще для поиска строк, вот примеры для поиска строк в строке std::string
Добрый вечер,
спасибо за ссылку. А для работы нужно весь текст из txt записывать? не получается организовать чтение из файла (не знаю как это сделать)
конечно, нужно считывать
Вот например один из вариантов чтения из файла в одну строку
Большое спасибо!!!!
Только один вопрос: как записать в переменную всю строку сначала (у меня просто получается только кусок) и как записать следуйщую строку?
Вот у меня так получилось:
Мысли насчёт второй строчки таковы:
узнать где переход на следуйщую строку и узнать точку
и записать всё что между ними в переменную (только это в мыслях, а как скомпилировать так ошибки одни)
Что это за кракозябры в коде. Как вообще понять, что вы этим хотите сказать?
У себя код скомпилировал, ну в некоторых случаях там есть выход за пределы массива, если не находит тот же самый Seven.
Не совсем понимаю конкретики вашей проблемы. И ещё перепишите код с использованием фигурных скобок у условий. А то мне кажется, что вы просто не совсем понимаете синтаксис языка. Если фигурный скобок у if нет, то в C++ учитывается в качестве тела условия только одна следующая за if строка, и никакие отступы в данном языке программирования роли не играют.
пример прост: я пишу из консоли переменную string
-Chto chitaesh?
txt:
программа должна выдать:
-knigy.
непонимаю как сказать программе
- все символы после конца строки и до точки запиши в пременную dva
Ну вот так можно написать программу.
Сохранит в вектор все строки, которые оканчиваются на точку. В вашем случае это как раз ответы получаются.
Добрый вечер. Извините, неправильно написал.....
Ну так выводит все строки с точкой, а мне нужно только следуйщую после нашей.
Ну самый такой вариант в лоб, при полном совпадении строки вопроса и учитывая, что следующая строка, которая оканчивается на точку является ответом, можно написать так.
Большооооое спасибо!!!!!
Не передать как я вам благодарен, спасибо что всегда отзываетесь.
Теперь я смогу продолжить работу в QT!!! (пробую писать бота (Я как вы могли догадаться немного не програмист, моя специализация - анимация),
( с Ui разобрался (строка ввода с кнопочкой), а вот с блокнотом была проблема, но благодоря вам это уже в прошлом (в эти строчки будут закидываться не просто слова, а путь к Waw файлу))
Спасибо!!!!