你如何得到一个从右到左阅读的向量?

时间:2014-12-14 09:34:29

标签: c++ vector

我创建了一个英语 - 西班牙语翻译器,需要将输入文件从西班牙语翻译成英语。我用矢量从我所拥有的文件中读取英文翻译。所以字典文件的一个例子就是 黑人,黑人 蓝色,azul 绿色,佛得角

等等。

下载了我已设置的词典文件的链接

http://pastebin.com/iuF5EfTZ

我提示用户输入单词并将翻译。我想出了如何首先使用英语 - 西班牙语向量。我试图切换我的for循环认为它会工作,但我意识到我的矢量for循环不能从右到左阅读。那么如何从输入文件中向右读取向量?我实现了一个布尔值,所以当找到单词或翻译时它会对它进行cout,但由于它不能从右向左阅读它不会cout。需要帮助谢谢。

要查看我的完整程序以测试它,请看一个链接:

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 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();


}

1 个答案:

答案 0 :(得分:1)

您在对getline的错误调用中使用了逗号分隔符。逗号位于英文单词后面,而不是西班牙单词。所以它应该是:

getline(fin, words, ',');
eng.push_back(words);
getline(fin, words);
span.push_back(words);

此外,逗号和西班牙语单词之间有空格,您需要将其删除。有关删除字符串周围空格的方法,请参阅此问题:

What's the best way to trim std::string?