下面的例子展示了如何在C++11中,利用regex_search()统计一篇英文文章中的单词数:

#include <iostream>
#include <regex>
#include <string>
#include <fstream>
using namespace std;
// 统计单词数
int countword(string& str)
{ try
{
int n = ;
smatch m; // 保存匹配结果的match_result
// 匹配单词的正则表达式,
// 包含了大小写英文字母,连字符,括号,引号
// 这个正则表达式还不完善,可以继续改进
regex ex("\\b[a-zA-Z-()\"]*\\b");
// 用regex_search()在文章中进行匹配,查找单词
while(regex_search(str,m,ex))
{
++n; // 找到,总数加1
cout<<m[]<<endl; // 输出找到的单词
str = m.suffix().str(); // 移动到下一个位置
}
return n;
}
catch (regex_error e)
{
cout<<e.what()<<endl;
}
}
// 读取文件内容
bool readfile(const string name,string& str)
{
ifstream in(name);
if(in.is_open())
{
char line[] = "";
while(true)
{
in.getline(line,);
str += line;
if(in.good())
{
str += '\n';
}
else
{
break;
}
}
return true;
}
else
{
return false;
}
}
int main(int argc,char* argv[])
{
if( != argc)
{
cout<<"argument error. eg. count.exe demo.txt"<<endl;
}
string str("");
if(readfile(argv[],str))
{
int n = countword(str);
cout<<"there are "<<n<<" words in "<<argv[]<<endl;
}
return ;
}

C++语言,统计一篇英文文章中的单词数(用正则表达式实现)的更多相关文章

  1. C语言 统计一篇英文短文中单词的个数

    //凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ #include<stdio.h> #define N 1000 void main(){ ] ...

  2. 统计英文文章中各单词的频率,打印频率最高的十个单词(C语言实现)

     一.程序思路及相关代码 首先打开文件,代码如下 FILE *fp; char fname[10]; printf("请输入要分析的文件名:\n"); scanf("%s ...

  3. C#统计英文文本中的单词数并排序

    思路如下:1.使用的Hashtable(高效)集合,记录每个单词出现的次数2.采用ArrayList对Hashtable中的Keys按字母序排列3.排序使用插入排序(稳定) public void S ...

  4. [Swift]LeetCode434. 字符串中的单词数 | Number of Segments in a String

    Count the number of segments in a string, where a segment is defined to be a contiguous sequence of ...

  5. C#LeetCode刷题之#434-字符串中的单词数​​​​​​​(Number of Segments in a String)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3941 访问. 统计字符串中的单词个数,这里的单词指的是连续的不是 ...

  6. 力扣(LeetCode)字符串中的单词数 个人题解

    统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符. 请注意,你可以假定字符串里不包括任何不可打印的字符. 示例: 输入: "Hello, my name is John" ...

  7. 翻译一篇英文文章,主要是给自己看的——在ASP.NET Core Web Api中如何刷新token

    原文地址 :https://www.blinkingcaret.com/2018/05/30/refresh-tokens-in-asp-net-core-web-api/ 先申明,本人英语太菜,每次 ...

  8. go语言之进阶篇runtime包中 Gosched Goexit GOMAXPROCS的使用

    一.runtime包 1.Gosched的使用 runtime.Gosched() 用于让出CPU时间片,让出当前goroutine的执行权限,调度器安排其他等待的任务运行,并在下次某个时候从该位置恢 ...

  9. 软件工程导论课后习题Github作业(把一个英文句子中的单词次序逆序,单词中字母正常排列)

    Java源代码    package yly; import java.util.Scanner; public class ruanjian { public static void main(St ...

随机推荐

  1. Ubuntu 12.04 Desktop安装XAMPP

    1/打开终端 在Dash里搜索.打开Dash,在里面搜索“gnome-terminal”,就可以找到终端应用序.快捷键Ctrl+Alt+L也可以,不过如果是虚拟机的话可能会有问题. 如果想以后快捷打开 ...

  2. action属性

    action属性 2013年7月8日 14:52 Path: action的访问路径,以"/"开头 Type: action的类型 Name: action使用的actionFor ...

  3. color the python console text

    //install termcolor module cd \ cd python27 cd scripts pip install termcolor pip install colorama // ...

  4. 利用glassfish4任意文件读取拿权限的一些思路

    只要讨论的是linux环境测试发现只针对GlassFish4,且基本上是已root运行的http://www.wooyun.org/bugs/wooyun-2010-0144595 zoomeye d ...

  5. 网络服务器带宽Mbps、Mb/s、MB/s有什么区别?10M、100M到底是什么概念?

    网络服务器带宽Mbps.Mb/s.MB/s有什么区别?我们经常听到IDC提供的服务器接入带宽是10M独享,或者100M独享,100M共享之类的数据.这的10M.100M到底是什么概念呢? 工具/原料 ...

  6. php 设计API之优化 记

    服务器端 可以考虑使用rest实现,清晰url:put http://aa.com/news 客户端 curl实现muliti机制,实现多线程并发,节省多接口调用的时间 curl实现keepalive ...

  7. hdu 3549 Flow Problem 网络流

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3549 Network flow is a well-known difficult problem f ...

  8. 【BZOJ】【1067】 【SCOI2007】降雨量

    思路题 玛雅,这分类讨论快讨论地疯了…… 从huzecong神的题解那里得到的灵感…… 首先考虑最好确定的情况:为true的时候,此时必须同时满足 1.x和y这两年的降雨量已知,且rain[x]< ...

  9. jquery $.ajax方法

    $.ajax({ timeout: 3000, cache:false, global:false, type: "POST", url: WEB_URL+"/logic ...

  10. 运用socket实现简单的服务器客户端交互

    Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意 ...