C++ 创造译者;需要从文本文件中正确插入

C++ 创造译者;需要从文本文件中正确插入,c++,fstream,text-files,insertion,C++,Fstream,Text Files,Insertion,对于我的CS课程,我们被指派使用以下文本文件创建一个从英语到西班牙语的翻译程序: 到目前为止,我已经完成了插入操作,但是当我运行程序时,单词被混合在一起,我打赌txt文件每行有多个单词的事实是破坏它的原因 #include<iostream> #include<string> #include<fstream> using namespace std; class transl { private: class word

对于我的CS课程,我们被指派使用以下文本文件创建一个从英语到西班牙语的翻译程序:

到目前为止,我已经完成了插入操作,但是当我运行程序时,单词被混合在一起,我打赌txt文件每行有多个单词的事实是破坏它的原因

#include<iostream>
#include<string>
#include<fstream>
using namespace std;

class transl
      { private:
            class word
                  { public:
                        string eng_word,
                               spa_word;
                        word * next,
                             * prev;    

                        word(string engl_word, string span_word, word * next1 = NULL, word * prev1 = NULL)
                        {   eng_word = engl_word;
                            spa_word = span_word;
                            next = next1;
                            prev = prev1;   }
                  };

            word * head,
                 * tail;

        public:
            transl::transl()
            {   head = NULL;
                tail = NULL;    }

            transl::~transl()
            { word * wordPtr, * nextWord; 
                     wordPtr = head;

                     if(head == NULL)
                        return;

                     while(wordPtr != NULL)
                          { nextWord = wordPtr->next;
                            delete wordPtr;
                            wordPtr = nextWord; }
            }

            void insert(string engl_word, string span_word)
            {   if(head == NULL)
                   head = new word(engl_word, span_word);

                    else
                    {   word * wordPtr;
                        wordPtr = head;

                        while(wordPtr->next != NULL)
                        {     wordPtr->next->prev = wordPtr;
                              wordPtr = wordPtr->next;  }

                        wordPtr->next = new word(engl_word, span_word);
                        cout << wordPtr->next->eng_word << "    " << wordPtr->next->spa_word << endl; } 
            }

            string search(string engl_word)
            {   return "Hello"; }

            };

int main()
    {   ifstream inFile;    inFile.open("dictionary.txt");
        string engl_word, span_word;
        transl test;

            if (!inFile)
            {   cout << "ERROR! CANNOT LOCATE DICTIONARY!" << endl;
                system("pause");
                return 1;   }

            cout << "Loading Dictionary:  ";

                while(inFile >> engl_word >> span_word)
                {   test.insert(engl_word, span_word);  }

            cout << "Done!" << endl;
            system("pause");
            system("CLS");

            cout << "Translate: ";
             cin >> engl_word;

            cout << "The translation of " << engl_word << " is " << test.search(engl_word) << '.' << endl;

            system("pause");
        return 0;   }

有人知道正确插入值的步骤吗是多余的,令人困惑。您正在搜索列表的末尾,但在此过程中对其进行了修改

你忘了在insert中写生词的上一个指针

然而,真正的问题在于阅读字典。当您执行
infle>>engl\u word>>span\u word
时,将读入两个限制空白的列表。但是,西班牙语条目不受空格限制,而是占据了行的其余部分。虽然您可以使用
>
阅读英语单词,但您需要类似
getline(cin,span_-word)
的内容来解析西班牙语表达式

peor    wound
la    herida
wounded    herida
Done!
Press any key to continue . . .