你如何让一个向量从右到左阅读

How do you get a vector to read right to left?

本文关键字:向量 一个 从右到左      更新时间:2023-10-16

我创建了一个英语-西班牙语翻译器,需要让它从输入文件将西班牙语翻译成英语。 我使用向量从我拥有的文件(称为字典(中读取英文翻译。 所以字典文件的一个示例是黑色,黑人蓝色,天蓝色绿色, 佛得角

等等。

这是我设置的字典文件的链接

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 的最佳方法是什么?