我创建了一个英语 - 西班牙语翻译器,需要将输入文件从西班牙语翻译成英语。我用矢量从我所拥有的文件中读取英文翻译。所以字典文件的一个例子就是 黑人,黑人 蓝色,azul 绿色,佛得角
等等。
下载了我已设置的词典文件的链接
我提示用户输入单词并将翻译。我想出了如何首先使用英语 - 西班牙语向量。我试图切换我的for循环认为它会工作,但我意识到我的矢量for循环不能从右到左阅读。那么如何从输入文件中向右读取向量?我实现了一个布尔值,所以当找到单词或翻译时它会对它进行cout,但由于它不能从右向左阅读它不会cout。需要帮助谢谢。
要查看我的完整程序以测试它,请看一个链接:
下面的是需要从右向左读取的向量的代码块 /////////////////////
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();
}
答案 0 :(得分:1)
您在对getline
的错误调用中使用了逗号分隔符。逗号位于英文单词后面,而不是西班牙单词。所以它应该是:
getline(fin, words, ',');
eng.push_back(words);
getline(fin, words);
span.push_back(words);
此外,逗号和西班牙语单词之间有空格,您需要将其删除。有关删除字符串周围空格的方法,请参阅此问题: