0

私は現在、ユニークな行とユニークな単語を見つけるためのコードを書こうとしています。一意の行に対して以下のコードを試みましたが、一意の行に関しては正しく計算されません。入力を無視し、文字、単語、文などを含む行をまだカウントしていると思います。したがって、入力(空白行)を行としてカウントし、余分な行をカウントしないように追加するものを理解するのに助けが必要です同じ。いくつかの異なる行をテストしたので、これが起こっていることを知っています。ユニークな言葉に関しては、私も始め方がわかりません :/

unsigned long countULines(const string& s)
{
   set<string> wl;
   string ulines;
   for(int ul = 0; ul < s.size(); ul++){
      wl.insert(ulines);
   }
   return wl.size();
}
4

1 に答える 1

0

これはあなたのために働くでしょう:

#include <iostream>
#include <sstream>
#include <string>
#include <set>

size_t countUniqueLines(const std::string& s)
{
    std::set<std::string> uniqueLines;
    std::istringstream is(s);

    std::string line;
    while (std::getline(is, line)) {
        if (!line.empty() && line[line.size() - 1] == '\r') {       
          line.erase(line.size() -1);
        }
        uniqueLines.insert(line);
    }

    return uniqueLines.size();
}

int main()
{
    const std::string myLines = "four\none\n\ntwo\nthree\nthree\n\n";

    std::cout << countUniqueLines(myLines) << std::endl;
}
于 2013-09-29T22:47:42.987 に答える