vc++编程问题-为难了我很久的编程难题

问题描述

为难了我很久的编程难题

求大家帮忙想想,在visual c++里面对一个给定的中文文本怎么把英语和标点符号过滤掉?

解决方案

 #include <iostream>
#include <string>
#include <regex>
using namespace std;

int main()
{
    string s = "中文123,英文abc...";
    string r = "";
    const char* c = s.c_str();
    for (int i = 0; i < s.length(); i++)
        if (c[i] > 256 || c[i] < 0)
            r += c[i];
    cout << r << endl;
}

解决方案二:

c[i]>256在这里起什么作用?
char的取值不是-128~127么?

解决方案三:

 #include <regex>

这个可以去掉

在线编译测试:
http://ideone.com/z2yjD1
中文英文

解决方案四:

直接判断字节值是不是小于 0x80,成立则是英文标点符号,因为中文编译方案中所有字节值都是大于0x7F的

解决方案五:

如果是Unicode编码方案,因为所有符号都用两个字节存储,而且英文符号的第二个字节值 为0,所以按
caozhy 给的代码处理就行。

解决方案六:

需要区分编码格式的,比如是char类型还是wchar_t类型。为此,可以用TCHAR类型,然后遍历字符串中的每一个字符,判断是否处于_T('A')和_T('Z'),以及a~z之间。对于标点符号一样处理。

解决方案七:

用正则表达式可以排除除了汉字和全角标点外的字符

时间: 2024-07-31 11:40:14

vc++编程问题-为难了我很久的编程难题的相关文章

看似简单,思考了很久的编程题,大神求解???

问题描述 看似简单,思考了很久的编程题,大神求解??? 输入n(1-10之间数字),将数字分解显示,如6可以显示为6,5+1,4+2,4+1+1..... 解决方案 http://ideone.com/bhnyWO 1+1+1+1+1 1+1+1+2 1+1+3 1+2+2 1+4 2+3 5 解决方案二: using System; using System.Linq; using System.Collections.Generic; public class Test { static i

编程c语言-C语言里面困惑了很久的问题

问题描述 C语言里面困惑了很久的问题 我不大理解这个运算 如果要考虑相等的情况 我会全部考虑相等 可是那样也是不对的 解决方案 第二页也有笔误.然后不懂的地方在哪 解决方案二: 三个数排序哪有那么复杂.如果你一定要罗列出所有的情况,那么不妨这样假设:1.三个数不相等,有六种情况.2.三个数中,有两个数相等,有六种情况.3.三个数都相等,有一种情况.如果这样想,思路是不是清晰了许多?对于编程问题,不用想的这么详细,你只要告诉电脑,你要先找出最大的数,然后找出第二大的数,这样就能排序了. 解决方案三

孵化器存在了很久,是时候来些彻底的改变了

摘要: 孵化器存在了很久,是时候来些彻底的改变了.氪空间正为此而生! 很多人在过去也都对孵化器做过一些改变,可是实际上到目前为止,很多团队对自己所在孵化器对自己能提供的帮助 孵化器存在了很久,是时候来些彻底的改变了.氪空间正为此而生! 很多人在过去也都对孵化器做过一些改变,可是实际上到目前为止,很多团队对自己所在孵化器对自己能提供的帮助是非常不满意的.就算是去到一些所谓最好的孵化器,你可能就要拿这个孵化器的投资,这可能就断了同一阶段其他投资人的投资可能. 孵化器可能本来就不应该是个盈利业务. 氪

vc++ 设备上下文-关于VC++中dc设备上下文的理解,文本编程

问题描述 关于VC++中dc设备上下文的理解,文本编程 在孙鑫老师的VC++视频教程中学习文本编程看到下面的代码: if (0x08 == nChar) { COLORREF clr = dc.SetTextColor (dc.GetBkColor ()); dc.TextOut (m_ptOrigin.x ,m_ptOrigin.y ,m_strLine); m_strLine = m_strLine.Left (m_strLine.GetLength ()-1); dc.SetTextCol

很久没有登录CSDN了

    很长时间没有登录CSDN以及自己的博客了!     今天工作闲暇之余突然想起很久没有维护自己的博客,很久没有到CSDN上看看最近的行业动态,了解一下IT界的八卦新闻以及程序员们的话题.      微软出了一个叫"BING"的浏览器,真不知是微软宣传不够还是我孤陋寡闻了,今天才从CSDN和月光博客上了解到,并且登录上去试了试,感觉还不错,不得不佩服微软,虽然基本上她的任何技术都没有走在最前面,但是基本上都是迎头赶上,与较早入市的其他厂家瓜分天下,甚至独霸天下.      转到招聘

c-链表的一个错误,找了很久也没发现为什么错了。。。

问题描述 链表的一个错误,找了很久也没发现为什么错了... /*随意输入n个数字,作为线性链表,遍历该列表返回输入值最小节点的关键字*/ #include #include #include #include struct example { int input; int keyword; struct example* next; }; typedef struct example EXAMPLE; int main (void) { EXAMPLE* head; EXAMPLE* p; EX

win7系统进入桌面很久才显示图标怎么办

  win7系统进入桌面很久才显示图标怎么办         解决方法: 1.按Win+R键,打开运行,输入regedit,点击确定; 2.在打开的注册表编辑器窗口中,展开至HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer,在右侧查看是否有"Max Cached Icons"值,如果没有,则新建一个名为"Max Cached Icons"的字符串值; 3.双击打开Max Cac

win8.1在局域网内打开IE浏览器要很久网页才会显示如何解决

  win8.1在局域网内打开IE浏览器要很久网页才会显示如何解决            具体方法如下: 1.打开"Internet 选项"(打开IE浏览器"Internet选项"窗口的方法),切换到"连接"选项卡; 2.点击"局域网(LAN)设置"区域的"局域网设置"按钮,打开"局域网(LAN)设置"窗口; 3.取消勾选"自动配置"区域的"自动检测设置&q

为什么U盘启动PE时加载镜像时间很久

  为什么U盘启动PE时加载镜像时间很久?电脑教程 PE镜像加载的时间取决于你的主板,有些主板上要七八分钟才能加载的镜像,在支持USB2.0启动的主板上也许只要几十秒