Por qué mi resultado no mostró la respuesta correcta

programación


Bien, digamos que hice un archivo de entrada que contiene la palabra y su significado. entonces permito al usuario preguntar la palabra que desea buscar. por ejemplo, el usuario desea buscar la palabra “hora”, por lo que la palabra “hora” está en el archivo de entrada y su significado se mostrará en el terminal.
pero ¿por qué mi resultado muestra que la palabra ‘tiempo’ no se encuentra mientras la palabra ‘tiempo’ está contenida en el archivo de entrada?

Lo que he probado:

C++
case 2: {
    string searchWord;
    cout << "Enter the word to search: ";
    cin >> searchWord;

    bool found = false;

    string word, meaning;
    while (getline(inFile, word) && getline(inFile, meaning)) {
        if (searchWord == word) {
            char firstAlphabet = searchWord.at(0);
            cout << "Word " << searchWord << " found in the dictionary.\n\n";
            cout << lineNum++ << "\t" << firstAlphabet << "\t" << searchWord << "\t" << meaning << endl;
            found = true;
            break;
        }
    }

    if (!found) {
        cout << "Word " << searchWord << " not found in the dictionary.\n";
    }

    cout << "\nDone...\n";
    break;
}

Solución 1

El siguiente código

C++
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    string searchWord;
    cout << "Enter the word to search: ";
    cin >> searchWord;

    bool found = false;

    ifstream inFile("dict.txt");

    string word, meaning;
    size_t itemNum = 0;
    while (getline(inFile, word) && getline(inFile, meaning))
    {
        if (searchWord == word) {
            char firstAlphabet = searchWord.at(0);
            cout << "Word " << searchWord << " found in the dictionary.\n\n";
            cout << (itemNum+1) << "\t" << firstAlphabet << "\t" << searchWord << "\t" << meaning << endl;
            found = true;
            break;
        }
      ++itemNum;
    }

    if (!found) {
        cout << "Word " << searchWord << " not found in the dictionary.\n";
    }

    cout << "\nDone...\n";
}

funciona en mi máquina Linux, siempre que el archivo de entrada esté estructurado adecuadamente (es decir, una línea completa para cualquier palabra seguido de una línea completa para el definición de palabra; por ejemplo, mi dict.txt es

money
a current medium of exchange in the form of coins and banknotes
time
the indefinite continued progress of existence and events in the past, present, and future regarded as a whole
universe
all existing matter and space considered as a whole

Solución 2

Al código fuente anterior le falta para getline. He probado el código en Windows con VS y parece funcionar si le agrega una copia del archivo de entrada de CPallini. Sugeriría un poco más de manejo de posibles errores y el uso del depurador.

コメント

タイトルとURLをコピーしました