【问题标题】:How do you get a vector to read right to left?你如何让一个向量从右到左阅读?
【发布时间】:2015-02-12 14:27:44
【问题描述】:

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

等等。

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

http://pastebin.com/iuF5EfTZ

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

要查看我的完整程序以对其进行测试,请访问以下链接:

http://pastebin.com/KHhiwLJs

下面是需要从右到左读取的向量的代码块 //////////////////////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++ 的初学者,我的课程下周结束,这是最后一次作业。如果我能够从一个文件中翻译程序,我将获得额外的学分

标签: c++ vector


【解决方案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?

【讨论】:

  • 这可能会有所帮助,但它仍然不能将西班牙语翻译成英语
猜你喜欢
  • 1970-01-01
  • 2021-02-09
  • 2015-09-05
  • 2012-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多