@Rivakiel
Хочу изменить мир

Как написать функцию вывода всей строки из словаря?

Пишу программу 3-х язычный словарь.

Написал функцию поиска нужного слова из текстового файла:
Код функции
string str, word, line; // переменная слова и строки

void Search() // функция поиска слова
{
    ifstream find("/home/user/Dictionary.txt");

    cout << "Введите слово которое надо найти: " << endl;
    cin >> word; // ввод слова
    while (getline(find, line)) // Условие поиска
    {
        if (line.find(word) != string::npos)
        {
            cout << word << endl; // вывод найденного слова
            break;
        }
    }
}


Сделал запись новых слов в словарь:
Код добавления новых слов
int main(int argc, char* argv[])
{
    string l1,l2,l3; // переменная 3 языков
    int x; // действия

    ofstream file; // Переменная записи
    file.open("/home/user/Dictionary.txt", ios::app); // Открытие/создание файла
    cout << "Введите номер нужного действия:" << endl;
    cout << "(1) Добавить слово, (2) Удалить слово(Удалится вся строка с 3 словами), (3) Изменить/исправить слово, "
            "(4) Повторить слово " << endl; // интерфейс для ввода
    cin >> x; // выбор нужного действия
    switch (x) {
    case 1: // добавление слова
    {
        cout << "Введите слово на первом языке " << endl;
        cin >> l1; // 1 язык
        cout << "Введите слово на втором языке " << endl;
        cin >> l2; // 2 язык
        cout << "Введите слово на третьем языке " << endl;
        cin >> l3; // 3 язык
        file << l1 << " - " << l2 << " - "  << l3; // Запись введенного значения
        file << endl; // Перенос строки
        file.close(); // Закрытие
        break;
    }


P.S. Да, я знаю, что если ввести слово через пробел, программа его разобьет сразу на несколько переменных(потом это исправлю)


И при выборе 4-го действия сделал поиск и вывод нужного слова из файла:
Код поиска
case 4: // повторение слова
    {
       string str;
       Search();
       cout << "Нажмите любую клавишу " << endl;
       getchar();
       getchar();
       ifstream f("/home/user/Dictionary.txt");
       str = word;
       getline(f, str);



       f.close();

       break;
    }


В .txt файле пока, что записано 3 слова.
Учитель - Teacher - せんせい
Ребенок - Boy - こ
Студент - Student - がくせい


Как мне сделать чтобы после того, как пользователь выбирал 4-е действие и программа вывела из файла нужное слово(которое вводил пользователь), после она при нажатии на клавишу Enter(или любую другую клавишу), выводила всю строку со словом и переводом этого слова на двух других языках?

К примеру:
Пользователь вводил слово "Студент", программа выводит нужное слово на консоль и после нажатия клавиши Enter выводила сразу всю строку на консоль "Студент - Student - がくせい".
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
@2bllk
#include <iostream>
#include <string>
#include <fstream>

using namespace std;

string findLineInFile(ifstream &file, const string &substring){
	int curLine = 0;
	
	string line;
	while(getline(file, line)) {
	    curLine++;
	    if (line.find(substring, 0) != string::npos) {
	        return line;
	    }
	}
	return "";
}

int main(int argc, char *argv[]){
	string substring = "Студент";
	ifstream file("Dictionary.txt");
	
	if (file.is_open())
	{
		cout << findLineInFile(file, substring) << endl;
	} else {
		cout << "Невозможно открыть файл!";
	}
	file.close();
	
	return 0;
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы