【发布时间】:2015-02-12 14:27:44
【问题描述】:
我创建了一个英语-西班牙语翻译器,需要让它从输入文件将西班牙语翻译成英语。我使用向量从我拥有的称为字典的文件中读取英文翻译。所以字典文件的一个例子是 黑人,黑人 蓝色,蔚蓝 绿色,佛得角
等等。
这是我设置的字典文件的链接
我提示用户输入单词,它会翻译。我首先想出了如何使用英语-西班牙语向量。我试图切换我的 for 循环,认为它会起作用,但我意识到我的矢量 for 循环不会从右到左读取。那么如何从输入文件中从右到左读取向量呢?我实现了一个布尔值,所以当找到单词或翻译时,它会计算它,但由于它不是从右到左读取它不会计算。需要帮助,谢谢。
要查看我的完整程序以对其进行测试,请访问以下链接:
下面是需要从右到左读取的向量的代码块 //////////////////////p>
void spanish()
{
ifstream fin;
vector <string> eng;
vector <string> span;
string words,temp;
bool FOUND = 0;
fin.open("dictionary.txt");
if (fin.fail())
{
cout << "Failed";
exit(1);
}
do{
getline(fin, words);
eng.push_back(words);
getline(fin, words, ',');
span.push_back(words);
}while (!fin.eof());
cout << " Spanish-English Now type in a Word you want to translate\n";
cin >> words;
for (int i=0; i < words.length(); i++)
words[i]= toupper(words[i]);
cout << "you entered " << words << endl;
for (unsigned int i=0; i<span.size(); i++)
{
if (span[i]==words)
{
cout << "Spanish translation is \n" << eng[i] << endl;
FOUND = 1;
}
if (FOUND)
break;
}
////////////////////////////////////这个向量需要从右到左阅读!!!
fin.close();
}
【问题讨论】:
-
反向迭代器对你有用吗? cplusplus.com/reference/vector/vector/rbegin
-
请按照从右到左的顺序准确解释您的意思。
-
我尝试了反向迭代器我不知道如何正确实现它,并且代码中的所有内容都是在编译器中从左到右读取的。所以当我输入一个文件时,它正在读取我从左到右的文件。在我的输入文件中,它的英文到西班牙文。我需要西班牙语到英语,因此读取为英语到西班牙语的文件需要从西班牙语读取到英语。
-
看来你应该使用
std::map,而不是两个std::vectors,来实现翻译字典。 -
@barmar 这超出了我的知识范围,我是 C++ 的初学者,我的课程下周结束,这是最后一次作业。如果我能够从一个文件中翻译程序,我将获得额外的学分