精华内容
下载资源
问答
  • C++检测标点符号

    千次阅读 2016-10-12 14:42:06
    下面是关于C++如何检测标点符号的,无论中文还是英文标点,这里能检测到的中文标点符号为GB2312编码格式的 BOOL isText(string cStrName) {  const char *str=cStrName.c_str();  char ch = *str++;  ...
    下面是关于C++如何检测标点符号的,无论中文还是英文标点,这里能检测到的中文标点符号为GB2312编码格式的
    BOOL isText(string cStrName)
    {
        const char *str=cStrName.c_str();
        char ch = *str++;
        int i=1;
        if(!(ch=='_' || ((ch & 0x80)&&(*str& 0x80)) || isalpha(ch)))
        {
            return FALSE;
        }
        if ((ch&0xff)==0xA1 && (*str& 0x80)>=0x3F)
        {
            return FALSE;
        }
        else if((ch&0xff)>0xA1 && (ch&0xff)<0xAA)
        {
            return FALSE;
        }
        else if ((ch&0xff)==0xAA && (*str& 0x80)<=0x40)
        {
            return FALSE;
        }
        if (ch<0)
        {
            *str++;
            i++;
        }
        int len = (int)strlen(cStr);
        for(i;i<len;i++)
        {
            ch = *str++;
            if(!(ch=='_' || ch=='-'|| (ch & 0x80) || isalpha(ch) || isdigit(ch)))
            {
                return FALSE;
            }
            if (i<len-1)
            {
                if ((ch&0xff)==0xA1 && (*str& 0x80)>=0x3F)
                {
                    return FALSE;
                }
                else if((ch&0xff)>0xA1 && (ch&0xff)<0xAA)
                {
                    return FALSE;
                }
                else if ((ch&0xff)==0xAA && (*str& 0x80)<=0x40)
                {
                    return FALSE;
                }
            }
            if (ch<0)
            {
                *str++;
                i++;
            }
        }
        return TRUE;
    }
    展开全文
  • C++实现字符串中取出标点符号,得到不带符号的字符串
  • ispunct() 函数用来检测一个字符是否为标点符号或特殊字符,其原型为:  int ispunct(int c); 【参数】c 为需要检测的字符。 【返回值】若 c 为标点符号或特殊符号(非空格、非数字和非英文字母)返回非 0 ...
    头文件:#inlude <ctype.h>
    

    ispunct() 函数用来检测一个字符是否为标点符号或特殊字符,其原型为:
        int ispunct(int c);

    【参数】c 为需要检测的字符。

    【返回值】若 c 为标点符号或特殊符号(非空格、非数字和非英文字母)返回非 0 值,否则返回 0。

    注意,此为宏定义,非真正函数。

    【实例】列出字符串str 中的标点符号或特殊符号。
    复制纯文本新窗口
    #include <stdio.h>
       
    1. #include <ctype.h>
      int main ()
      {
          int i=0;
          int cx=0;
          char str[]="Hello, welcome!";
          while (str[i])
          {
              if (ispunct(str[i])) cx++;
              i++;
          }
          printf ("Sentence contains %d punctuation characters.\n", cx);
          return 0;
      }
    输出结果:
    Sentence contains 2 punctuation characters.
    展开全文
  • c++ 处理中文标点符号

    千次阅读 2017-02-26 19:33:22
    1、去掉字符串首尾的标点符号——英文 str.erase(0, str.find_first_not_of(str_puncuation)); | str.erase(str.find_last_not_of(str_puncuation) + 1); 其中str_puncuation表示要删除的标点符号存在问题:处理的...

    1、去掉字符串首尾的标点符号——英文

    str.erase(0, str.find_first_not_of(str_puncuation));                       |
    str.erase(str.find_last_not_of(str_puncuation) + 1);       
    其中str_puncuation表示要删除的标点符号
    存在问题:处理的字符串包含中文时会有问题(某些标点符号会匹配半个汉字),比如“【”会匹配“网”。

    2、去掉字符串首尾的标点符号——中英文

    将字符串和对应的标点符号都变成宽字节,然后再处理

    string转为wstring

    std::wstring StringToWstring(const std::string str)
    {// string转wstring
        unsigned len = str.size() * 2;// 预留字节数
        setlocale(LC_CTYPE, "");     //必须调用此函数
        wchar_t *p = new wchar_t[len];// 申请一段内存存放转换后的字符串
        mbstowcs(p,str.c_str(),len);// 转换
        std::wstring str1(p);
        delete[] p;// 释放申请的内存
        return str1;
    }
    

    然后再运用下面的代码去掉首尾的标点符号,其中wstr和wstr_puncuation分别表示转换为宽字节后的字符串

    wstr.erase(0, wstr.find_first_not_of(*wstr_puncuation));                       |
    wstr.erase(wstr.find_last_not_of(*wstr_puncuation) + 1);       

    3、补充,用c++里面的正则表达式去掉标点符号(中英文)。

    举例,匹配以“网“结尾的字符串,匹配成功则取出”网“前面的字符串

                  boost::wregex wrg(L"(.*?)(网)");//"L"保证是宽字节
                  boost::wsmatch wsm;
                  bool r=boost::regex_match( wsToMatch, wsm, wrg);
                  if(r) //如果匹配成功
                  {
                    int iLen= wcstombs( NULL, wsm[0].str().c_str(), 0 );//wsm[0]表示取的是"网"前面的字符串(和正则里面的括号相关)
                    char *lpsz= new char[iLen+1];
                    int i= wcstombs( lpsz, wsm[0].str().c_str(), iLen );
                    lpsz[iLen] = '\0';
                    string sToMatch(lpsz);
                    delete []lpsz;
                    cout << "result:" << sToMatch << endl;  
                   }
    

    其中string和wstring的转换参考:http://www.cnblogs.com/SunboyL/archive/2013/03/31/stringandwstring.html

    展开全文
  • 今天在做文本预处理时,在 C/C++去除中文(全角)标点符号遇到了困难,特地到此求助各位csdner~~~
  • 判断字符串有多少个汉字和标点符号, // GENERAL_PUNCTUATION 判断中文的“号 // CJK_SYMBOLS_AND_PUNCTUATION 判断中文的。号 // HALFWIDTH_AND_FULLWIDTH_FORMS 判断中文的,号
  • C++识别中文标点

    千次阅读 2016-07-22 11:24:52
    之后用库的ispunct模板函数来识别标点符号。这个函数用法和C版本的ispunct差不多,只是多了字符类型模板参数和一个本地环境locale参数,因此可以根据locale判断出英文字符以外的符号。在中文系统语言的wi
    先将UTF8 string转为wchar_t字符类型的wstring。这个可以借助第三方库、系统API(例如windows的MultiByteToWideChar)、C++11的<codecvt>等。之后用<locale>库的ispunct模板函数来识别标点符号。这个函数用法和C版本的ispunct差不多,只是多了字符类型模板参数和一个本地环境locale参数,因此可以根据locale判断出英文字符以外的符号。在中文系统语言的windows下一般不显式设置locale就可以工作:locale loc;
    wchar_t c = L'。';
    cout << boolalpha << ispunct(c, loc) << endl;  // true
    而linux环境下如果要识别英文以外的标点可能需要指定locale:locale loc("en_US.UTF-8");
    wchar_t c = L'。';
    cout << boolalpha << ispunct(c, loc) << endl;  // true

    作者:Gomo Psivarh
    链接:http://www.zhihu.com/question/35254977/answer/61945181
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权

    展开全文
  • #include <string> using std::string; #include <cctype> using std::isupper; using std::toupper; using std::islower; using std::tolower; using std::isalpha;...#include &...
  • 想要过滤一个文本中的标点符号。 对英文标点符号可以使用cctype中的ispunct方法来识别 而对于中文标点符号,则需要一定的转换。 基础知识: 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、...
  • c语言函数库——ispunct函数 判断字符是否为标点符号或特殊字符 头文件:#inlude <ctype.h> spunct() 函数用来检测一个字符是否为标点符号或特殊字符,其原型为: int ispunct(int c); 【参数】c 为需要检测的...
  • 代码如下#include #include using namespace std;... string s("带标点符号的字符串"); for (string::size_type i = 0; i != s.size(); ++i) { if (ispunct(s[i])) { for (string::size_type j
  • C++中常见的字符判断与处理方法

    千次阅读 2021-03-28 23:28:14
    字符串处理是编程世界中一项基础技能,特别是对于C/C++的程序员们,远没有那么多华丽的工具可以使用,大多数时候都需要一个个字符来判断和处理,甚至对于C语言来说都没有字符串类型,字符数组是其常见的等价结构,...
  • #include #include #include /* run this program using the console pauser or add your own getch, system("pause") or input loop */ using namespace std; int main(int argc, char** argv) { ...
  •  一下是判断是不是中文标点符号的方法。 #include #include int main() { int i; char unsigned ch[5]={"你好"}; char ch2[5]; char unsigned ch3[3]={"。"}; for(i=0;i;i++) printf(
  • 这是一个关于字符串处理的简单程序,但是里面有一些...// 编写一段程序,读入一个包含标点符号的字符串,将标点符号去除后输出字符串剩余的部分 #include "stdafx.h" #include &lt;iostream&gt;...
  • 因为要去掉空格和标点符号 我设了word-1数组,判断输入的明文字符是否为字母,然后再复制给word-2 但是结果输出不对,空格和标点符号没有去掉,被一起加密了!! 求解!!! 怎样才能去掉空格和标点...
  • 在linux环境下,c/c++默认的中文编码为UTF-8,中文的unicode编码是双字节的编码。有趣的是,windows环境下中文utf-8的编码为两个字节,而linux环境下UTF-8的为三个字节,而匹配中文使用正则表达式为[\u4e00-\u9fa5]...
  • 判断给定字符串(包含标点符号和空格)是否为回文? 什么是回文? 如果一个字符串忽略标点符号、大小写和空格,正着读和反着读一模一样,那么这个字符串就是palindrome(回文)。 要求:如果给定的字符串是回文,返回...
  • C++中关于字符以及字符串的判断

    千次阅读 2020-07-03 12:38:04
    ispunct():判断字符是否是标点符号 isupper():判断字符是否是大写字母 isxdigit():判断字符是否是十六进制数 toupper():转换为大写字母 tolower():转换为小写字母 思路: 1、回文串判断,首尾比较。忽略大小...
  • 判断中英文符号标点

    千次阅读 2013-03-27 08:33:42
    static boolean isSymbol(char ch) { if(isCnSymbol(ch)) return true; if(isEnSymbol(ch))return true; if(0x2010 ) return true; if(0x2020 ) return true
  • 1.对每个字符进行判断是否为标点符号,使用基于范围的for语句; 2.如何去掉标点符号之后将剩余字符连接起来?使用string的相加操作。 #include "stdafx.h" #include &lt;string&gt; #include &...
  • 由键盘输入一个字符,判断其是字母、数字还是其它符号.
  • 虽然string库提供迭代器 string::iterator end = sentence.end() ,可以很方便的定位到字符串最后一个字符之后,但是迭代器end无法进行*end操作(出现*end就会报错)也就无法用*end = NULL来进行边界条件判断,只能...
  • #include<ctype.h>中包含了一系列字符函数 函数名称 返回值【输入是字符char】 ... 如果是标点符号,返回true isspace() 如果是空白字符,包括空格、进纸、换行符、回车、制表符等
  • ispunct() 函数用来检测一个字符是否为标点符号或特殊字符,其原型为:  int ispunct(int c); 【参数】c 为需要检测的字符。 【返回值】若 c 为标点符号或特殊符号(非空格、非数字和非英文字母)返回非 0 ...
  • C++中内置很多判断字符性质的函数,具体用法如下: ...ispunct() //是否是标点符号 isupper() //是否是大写字母 islower() //是否是小写字母 toupper() //转换为大写字母 tolower() //转换为小写字母 ...
  • C++ 判断是否存在Emjoi表情 弄了很久才弄出来,做个记录 bool isContainEmoji(const std::string str) { bool bContain = false; std::u16string ut16 = {}; if (StringUtils::UTF8ToUTF16(str, ut16)) { ...
  • 对英文字母进行加密,保留标点符号 #include <stdio.h> #include <stdlib.h> void main() { char *s=NULL; char str[50]; int i; printf("输入英文字符串(不超过50个字符,按回车键结束输入):"); ...
  • 2.忽略标点字符和空格,目前还没学习正则表达式,而且也不知道C++有没有(我所知道的python有),但是吃出我的作法是:将标点符号和空格放在一个字符串(punct)里面,然后在遍历字符串的时候,对每个字符,判断是否...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,171
精华内容 2,468
关键字:

c++判断标点符号

c++ 订阅
友情链接: tcp_Server.zip