你如何让一个向量从右到左阅读
How do you get a vector to read right to left?
我创建了一个英语-西班牙语翻译器,需要让它从输入文件将西班牙语翻译成英语。 我使用向量从我拥有的文件(称为字典(中读取英文翻译。 所以字典文件的一个示例是黑色,黑人蓝色,天蓝色绿色, 佛得角
等等。
这是我设置的字典文件的链接
http://pastebin.com/iuF5EfTZ
我提示用户输入单词,它将翻译。 我首先想出了如何使用英语-西班牙语向量。 我试图切换我的 for 循环,认为它会起作用,但我意识到我的向量 for 循环不是从右到左阅读的。 那么如何使向量从输入文件从右到左读取呢? 我实现了一个布尔值,所以当找到单词或翻译时,它会去掉它,但由于它不是从右到左阅读,所以它不会去。需要帮助谢谢。
要查看我的完整程序以测试它,请单击一个链接:
http://pastebin.com/KHhiwLJs
下面是需要从右到左读取的向量的代码块/////////////////////
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 translaten";
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();
}
您在错误的调用中使用逗号分隔符来getline
.逗号在英语单词之后,而不是西班牙语单词之后。所以它应该是:
getline(fin, words, ',');
eng.push_back(words);
getline(fin, words);
span.push_back(words);
此外,逗号和西班牙语单词之间有一个空格,您需要将其删除。有关删除字符串周围的空格的方法,请参阅此问题:
修剪 std::string 的最佳方法是什么?
相关文章:
- 函数向量_指针有不同的原型,我可以构建一个吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 为什么我不能将一个对象push_back到属于另一个类的对象向量中?
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 获取向量C++中第一个值和最后一个值的和
- 从多个源构造一个对象,包括一个对象向量
- 为什么一个向量上的多线程操作很慢
- 基于范围的 for 循环:迭代使用一个元素扩展的向量
- C++ - 如何在结构向量中找到结构体一个成员的最大值?
- 如何在 C++11 中查找和更新向量中的一个嵌套结构
- Lower_bound不适用于具有 3 个元素的向量的最后一个元素
- 将一个向量插入另一个向量的某个位置
- std::find,返回所有找到的值的替代方法,而不仅仅是存在重复的向量的第一个值
- 将指向给定子类的指针从一个向量复制到另一个向量
- 如何创建一个类,以便向量工作 std::vector<MyClass<int>> v{ 1,2,3 };
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将向量之间的数字放在另一个向量之间<vector>>如果两个数字的差值为 1
- 如何在不复制的情况下将一个向量移动到另一个向量中
- 创建一个函数的 Python 绑定,返回指向带有 boost 的向量的指针
- 紧凑向量一个小的内存足迹向量