gpt4 book ai didi

c++ - 扩展程序以计算线路频率

转载 作者:行者123 更新时间:2023-11-28 01:01:52 24 4
gpt4 key购买 nike

我有这个简单的程序来计算词频:

#include <iostream>
#include <map>
#include <cctype>
#include <string>
using namespace std;
int main(void) {
map<string, int> words;
map<string, int>::iterator i;
string s;
while (cin >> s) {
transform(s.begin(), s.end(), s.begin(), ::tolower);
words[s]++;
}
for (i=words.begin(); i != words.end(); i++)
cout << i->first << " " << i->second << endl;
return 0;

现在如何计算行频而不是词频。每行在输入中由 '\n' 换行符分隔。

最佳答案

如果要统计总行数,那就很简单了:

 size_t countLine = 0;
while(std::getline(std::cin, s)) countLine++;

但是如果你真的想计算同一行的频率,那么在你的代码中,替换

string s;

line s;

其中 line 定义为:

struct line : std::string
{
friend std::istream & operator >> (std::istream &in, line &ln)
{
return std::getline(in, ln);
}
};

或者,您可以将其设为通用:

template<typename CharT, typename Traits = std::char_traits<CharT>, typename Allocator = std::allocator<CharT>>
struct basic_line : public std::basic_string<CharT, Traits, Allocator>
{
friend std::basic_istream<CharT, Traits> & operator >> (std::basic_istream<CharT, Traits > &in, basic_line<CharT, Traits, Allocator> &ln)
{
return std::getline(in, ln);
}
};

然后定义这些类型定义:

typedef basic_line<char>    line;
typedef basic_line<wchar_t> wline;

关于c++ - 扩展程序以计算线路频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8322031/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com