我正在寻找一种使用STL和boost在文本文档中查找最长单词(基于长度)的方法。
这是我的解决方案。但是,它一点也不好,操作太多( token ,排序..)。有没有更简单的方法来解决这个问题?

// utility and memory
#include <utility>
#include <functional>
#include <memory>

#include <locale>
#include <string>

// data structure and algorithm
#include <stack>
#include <vector>
#include <list>
#include <set>
#include <map>
#include <deque>
#include <list>
#include <bitset>
#include <algorithm>
#include <iterator>
// numeric
#include <complex>
#include <numeric>
#include <valarray>

// input/output
#include <iostream>
#include <iomanip>
#include <ios>
#include <iosfwd>
#include <streambuf>
#include <sstream>

// standard C
#include <cctype>
#include <cmath>
#include <climits>
#include <cstdlib>
#include <ctime>
#include <cassert>
#include <cstring>

// boost
#include <boost/tokenizer.hpp>

int main() {
    std::string str = "Test, test!, test...string";
    boost::char_separator<char> sep( ",!,.-" );
    boost::tokenizer<boost::char_separator<char> > tokens( str, sep );
    std::vector<std::string> res;
    std::copy( tokens.begin(), tokens.end(), std::back_inserter( res ) );
    std::sort( res.begin(), res.end(), []( const std::string& l, const std::string& r ) { return l.length() > r.length(); } );
    std::cout << "longest : " << *res.begin() << "\n";
    return 0;
}

最好的祝福,

最佳答案

您可以使用 std::max_element 。只需提供迭代器对和您已经编写的比较器即可。

关于c++ - 如何在文本文档中找到最长的单词?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4578249/

10-11 22:09
查看更多