问题起源于一个同学 daidaimadaima 的私信,他的问题是


他写的版本是

#include<iostream>
using namespace std;
string dic[] = { "自然语言处理","准时","课程","作业","有","老番茄","意思","上课","计算语言学","开心" };// 是否为词表中的词或者是词表中词的前缀
bool inDict(string str)
{bool re = false;int i;int len = 10;//原来是GET_ARRAY_LEN(dic, len);但是他没发给我,所以这里直接赋值算了for (i = 0; i < len; i++){// 是否和词表词相等或者是词表词前缀if (str == dic[i].substr(0, str.length())){re = true;}}return re;
}int main()
{string sentence = "自然语言处理课程有意思";string word = "一";int wordlen = word.length();int i;string s1 = "";cout << "词典:" << dic << endl;cout << "句子:" << sentence << endl;for (i = 0; i < sentence.length(); i = i + wordlen){string tmp = s1 + sentence.substr(i, wordlen);if (inDict(tmp)){s1 = s1 + sentence.substr(i, wordlen);}else{cout << "/" << s1;s1 = sentence.substr(i, wordlen);}}cout << "/" << s1;
}

但是,我用运行之后,并没有发现乱码,可能他指的是输出dic是数字而不是内容,也有可能他指的是字符串中有中、英文混杂时错误

#include<iostream>
#include<vector>
#include<string.h>
using namespace std;
vector<string>dic = { "自然语言处理","准时","课程","作业","有","老番茄","意思","上课","计算语言学","开心" };int GET_ARRAY_LEN(vector<string>dic) {return  dic.size();
}// 是否为词表中的词或者是词表中词的前缀
bool inDict(string str)
{bool re = false;int i;int len =  GET_ARRAY_LEN(dic);for (i = 0; i < len; i++){// 是否和词表词相等或者是词表词前缀//可能错误:if (str == dic[i].substr(0, str.length()))/*==是比较a b的值compare是比较 a b指向的内容。建议用内置的比较:strcmp和compare等*/if( str.compare(dic[i].substr(0,str.size()))==0 )        {re = true;}}return re;
}int main()
{string sentence = "自然语言处理d课程有意思吗有意思";  //自然语言处理d课程有意思吗意思string cword = "一";int cwordlen = cword.length();/*其实这一步和上一步可以直接换成int cwordlen=2;因为中文字符在这里为2个字节,英文字符也就是我们平时的cout是论ascill码的--为一个字节,所以下面加一个判断中英文,再改变i,而且我发现上面同学的代码中有一个bug就是无论最后一个对与错,都会输出,所以需要再加一个判断,我是把中文字符和英文字符都看成一个一个地读和累加判断
*/int i,j;string s1 = "";string tmpStr = "";string tmp = "";cout << "句子:" << sentence << endl;for (i = 0; i < sentence.length();){j = i;if (sentence[i] < 0) {tmpStr = s1 + sentence.substr(i, cwordlen);tmp = sentence.substr(i, cwordlen);j += cwordlen;}else {tmpStr = s1 + sentence.substr(i, 1);tmp = sentence.substr(i, 1);j += 1;}if (inDict(tmpStr)){s1 = tmpStr;  cout << tmp;}else{cout <<"/";s1 = tmp;         if (inDict(s1)) {cout << s1;}}i = j;}  }

C++混合中文英文字符串匹配查找改进相关推荐

  1. python(40):利用utf-8编码判断中文英文字符

    #!/usr/bin/env Python # -*- coding:GBK -*- """汉字处理的工具: 判断unicode是否是汉字,数字,英文,或者其他字符. 全 ...

  2. python英文字符表示_python利用utf-8编码判断中文英文字符(转)

    下面这个小工具包含了判断unicode是否是汉字.数字.英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作. #!/usr/bin/env python # -*- coding: ...

  3. python 利用utf-8编码判断中文英文字符

    下面这个小工具包含了判断unicode是否是汉字.数字.英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作. #!/usr/bin/env python # -*- coding: ...

  4. 正则匹配中文英文字符及标点

    /^([\p{Han}\p{P}A-Za-z0-9])*$/u   其中 \p{Han}表示utf-8编码中的所有中文字符, \p{P}表示中英文标点, A-Z表示大写字母, a-z表示小写英文字母, ...

  5. 正则匹配中文英文字符、数据及标点

    /^([\p{Han}\p{P}A-Za-z0-9])*$/u其中 \p{Han}表示utf-8编码中的所有中文字符, \p{P}表示中英文标点, A-Z表示大写字母, a-z表示小写英文字母, 0- ...

  6. 字符串匹配--Sunday算法 1

    字符串匹配(查找)算法是一类重要的字符串算法(String Algorithm).有两个字符串, 长度为m的haystack(查找串)和长度为n的needle(模式串), 它们构造自同一个有限的字母表 ...

  7. 字符串匹配:字符串中查找某子串

    字符串匹配:字符串中查找某子串 需求 具体算法 常规方法 程序 KMP算法 程序 后续 需求 我们在平时的软件开发,尤其是嵌入式开发,字符串匹配是非常重要的一个算法.而目前常用的字符串匹配算法有很多, ...

  8. Java实现字数统计(中文英文韩文日文混合),类似word效果

    因为业务需求,需要一个字数统计的功能,其实这个功能也不难,但是因为这边涉及到中文,英文, 日文和韩文的混合文本,所以不能用一般的统计方法,在网上搜索了一些, 然后综合了一下自己写了个支持混合统计的工具 ...

  9. python分割字符串中文_python 分割中文英文混合字符串的正确方法

    python 里的字符编码不统一导致中英文的处理有不同的结果,下面介绍中文英文混合字符串 split 的方法. 分割词 #!/usr/bin/env python # -*- coding: utf- ...

最新文章

  1. beautifulsoup以及正则表达式re之间的一些知识!
  2. CUMCM:05B  DVD在线租赁
  3. 20165214 2018-2019-2 《网络对抗技术》Exp6 信息搜集与漏洞扫描 Week9
  4. Twain 学习纪录
  5. 人脸检测源码facedetection
  6. 跨站脚本专题 XSS
  7. VS2005、VS2010等VS系列IDE在MFC开发过程中,Resource View标签打不开,问题为“opened in other editor”
  8. python怎么做软件程序_Revit二次开发python怎么做?人工智能python语言在BIM软件高效建模的运用尝试...
  9. 按创建日期删除指定日期之前的文件夹及文件夹下的所有子目录
  10. 深入理解计算及系统 Chapter2 学习笔记
  11. LVS部分调度算法的适应场景分析
  12. 记录成功通过CSP接口获取Ukey的X509数字证书过程
  13. ffmpeg中的pcm格式
  14. 手机卫星定位系统_真的可以通过手机号码,准确定位对方信息吗?
  15. java查找pdf关键字_java实现查找PDF关键字所在页码及其坐标
  16. 计算机英语考虑是,计算机英语中单词privilege和permission的区别
  17. OpenBSD之网络配置
  18. windows10如何查看电池损耗
  19. position四个属性详解
  20. Python pta题目

热门文章

  1. SAP VL09 DN凭证冲销保存增强
  2. EasyDL物体检测数据转为VOC数据集
  3. 龙迅LT6911GXC,HDMI转MIPI/LVDS,提供技术支持
  4. 清华世界计算机大赛,全球计算机ACM总决赛浙大第一名,密西根大学第二,清华第三...
  5. 重磅发布 | Serverless 应用中心:Serverless 应用全生命周期管理平台
  6. 2017秋-软件工程第五次作业(1)-【探路者】团队选题展示(文案+美工)
  7. iOS手动和自动旋转屏幕
  8. 工作记录迁移0x0000001
  9. 2021-2027全球与中国塑料热成型产品市场现状及未来发展趋势
  10. 机器学习11:应用之图片字符识别