给定一个字符串数组,如何删除重复项?

时间:2017-08-11 14:02:58

标签: c++ string duplicates containers punctuation

我想知道如何从容器中删除重复的字符串,但忽略了跟踪标点符号的字差异。

例如给出这些字符串:

  

为什么我们在这里?

我想得到这个输出:

  

为什么我们在这里?

1 个答案:

答案 0 :(得分:0)

算法:

  1. 阅读单词成功时,请执行以下操作:
  2. 如果文件结束,请退出。
  3. 如果单词列表为空,请按回字。
  4. 否则开始 搜索单词列表。
  5. 如果单词不存在,请回复该单词 结束其他(步骤4)
  6. 结束(一边读一个字)
  7. 使用std::string代替您的话。 这允许您执行以下操作:

    std::string word;
    while (data_file >> word)
    {
    }
    

    使用std::vector包含您的字词(尽管您也可以使用std::list)。 std::vector动态增长,因此如果您选择了错误的尺码,则不必担心重新分配。
    要附加到std::vector,请使用push_back方法。

    要比较std::string,请使用operator==

    std::string new_word;
    std::vector<std::string> word_list;
    //...
    if (word_list[index] == new_word)
    {
      continue;
    }