100分提问:C++中string中包含中文和英文以及其他文字,怎么可以分出中文字符和英文字符

李亚超 2011-01-12 08:38:38
C++,string中包含中文和英文以及其他语言文字,怎么可以分出中文字符和英文字符。
比如,string s="你好CSDN,我的";
分出的效果为:string t ="你/好/C/S/D/N/,/我/的/";
字符串的类型要为,标准的C++字符类型,string,不能为CString。
给出程序者:60分,顶着有份。
...全文
1257 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
李亚超 2011-01-13
  • 打赏
  • 举报
回复
好的,问题解决了,谢谢大家。14楼的给出来代码,并且可以处理分出藏文。这个程序主要是处理藏文和汉语、英语的。
14楼60分。
ls251544415 2011-01-13
  • 打赏
  • 举报
回复
区分中英文的字符,只有从字符的码值上进行判断了
英文是采用的ASCII编码,其码值在闭区间[0,255]内
中文是采用的Unicode编码,其码值是大于255的

只有逐个从字符串变量里面将字符抽取出来,进行码值的判断
tzg_dzq 2011-01-13
  • 打赏
  • 举报
回复
我的想法:
先把string 转为wstring ,此时就可以从wstring中一个一个地把他们取出来了。
pmars 2011-01-13
  • 打赏
  • 举报
回复
话说,那个汉子的第一个字节应该是小于0的吧?这样就oK了
mtj520 2011-01-13
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 yangglemu 的回复:]
C/C++ code

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
string s = "你好CSDN,我的";
string t;
for(int i=0;……
[/Quote]
+1
  • 打赏
  • 举报
回复

#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
string s = "你好CSDN,我的";
string t;
for(int i=0; i<s.length(); i++)
{
if(s[i]<255 && s[i]>0)//扩充的ASCII字符范围为0-255,如是,处理一个字节
{
t.append(s.substr(i,1));
t.append("/");
}
else//<0,>255的是汉字,处理两个字节
{
t.append(s.substr(i,2));
t.append("/");
++i;
}
}
cout << t << endl;//输出符合要求
return 0;
}

luciferisnotsatan 2011-01-13
  • 打赏
  • 举报
回复
用find_first_of 找英文字母
bruceteen 2011-01-13
  • 打赏
  • 举报
回复
<ctype.h>

int isleadbyte(
int c
);
Arcticanimal 2011-01-12
  • 打赏
  • 举报
回复
Win32 API

int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cbMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);

根据string的编码,选用合适的CodePage(控制台或者edit控件输入的字串一般选CP_OEMCP),转为宽字符串,一个宽字符对应一个汉字(字母)

非Win就用9楼的方法吧

shzhfu 2011-01-12
  • 打赏
  • 举报
回复
可以判断每个字符的ASCII码值,小于128的可看做英文字符,大于等于128(严格说是连续2个字节都大于等于128)的可以看成汉字。
libinfei8848 2011-01-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 healer_kx 的回复:]
我至少算是顶的了。。。


C/C++ code

void main()
{
wstring a = L"Hello您好CSDN";
wstring r;
r = a[0];
for (int i = 1; i < a.length(); ++i)
{
r += L"/";
r += a[i];
……
[/Quote]

程序中就用string难道不行么?
無_1024 2011-01-12
  • 打赏
  • 举报
回复
wstring,使用的是wchar_t类型,这是宽字符,用于满足非ASCII字符的要求,例如Unicode编码,中文,日文,韩文什么的。对于wchar_t类型,实际上C++中都用与char函数相对应的wchar_t的函数,因为他们都是从同一个模板类似于上面的方式定义的。因此也有wcout, wcin, werr等函数。

实际上string也可以使用中文,但是它将一个汉字写在2个char中。而如果将一个汉字看作一个单位wchar_t的话,那么在wstring中就只占用一个单元,其它的非英文文字和编码也是如此。这样才真正的满足字符串操作的要求,尤其是国际化等工作。

healer_kx 2011-01-12
  • 打赏
  • 举报
回复
我至少算是顶的了。。。


void main()
{
wstring a = L"Hello您好CSDN";
wstring r;
r = a[0];
for (int i = 1; i < a.length(); ++i)
{
r += L"/";
r += a[i];
}
wcout<<r;
}

healer_kx 2011-01-12
  • 打赏
  • 举报
回复
你用wstring好了,也是标准库的类型。

“1-考试报名系统1”项目是一个数据结构课程设计,旨在创建一个考试报名系统。该项目由汪明杰同学在软件学院软件工程专业,同济大学进行,指导教师为张颖。 本文档详细阐述了项目的析、设计、实现和测试过程。首先,项目背景指出考试报名系统对学校教务管理的重要性,特别是在处理大量考试人员时的挑战。接着,项目需求析部明确了系统应具备的功能,包括用户友好性、数据处理能力等。 在项目要求,功能要求详细列出了系统应具备的各个功能,如: 1.3.1 功能要求:这可能包括考生注册、考试选择、报名、取消报名、查询考试信息等功能。 1.3.2 输入格式:可能涉及考生信息输入的格式规范,如姓名、学号、选择的考试科目等。 1.3.3 输出格式:可能涉及打印报名成功通知、查询结果展示等输出信息的格式。 项目设计部讨论了数据结构和类的设计: 2.1 数据结构设计:可能使用数据结构如链表来存储和管理考生信息和考试数据。 2.2 类设计:包括结点类(ListNode)、双向链表类(List)以及数据库类(DataBase),用于构建系统的核心结构。 在项目实现章节,详细描述了各个功能的实现逻辑和代码,包括: 3.1 项目主体功能:涵盖系统的整体流程和代码实现。 3.2 项目初始化:如何加载初始数据,包括读取文件和手动输入。 3.3 插入数据:添加新的考生信息或考试报名。 3.4 删除数据:取消考生的报名。 3.5 修改数据:更新考生信息或考试选择。 3.6 查询数据:根据特定条件查找考生信息或考试详情。 3.7 统计数据:可能包括统计报名人数、考试科目选择情况等。 最后,项目测试部涵盖了各种测试用例,确保系统的正确性和稳定性,如: 4.1 项目初始化测试:验证数据加载功能。 4.2 插入、删除、查找、修改和统计测试:别检查各功能是否正常工作。 4.7 边界测试:测试特殊情况,如插入已存在的考生、删除不存在的考生等。 这个“1-考试报名系统1”项目涵盖了软件开发的完整生命周期,从需求析到设计、实现和测试,体现了软件工程的核心原则,特别是数据结构的应用和系统功能的实现。
根据提供的文件信息,本知识点将围绕“postprocess_swan”笔记本集合及其相关的SWAN数值模型后处理过程展开。 标题的“postprocess_swan”指出这是一个专门用于后处理SWAN(Simulating Waves Nearshore)数值模型结果的笔记本集合。SWAN模型是一个广泛应用于近岸海域的波浪模拟工具,它可以模拟和析波浪传播、生成、折射、反射、叠加以及破碎等现象。SWAN模型结果的后处理是整个模拟过程的重要环节,它能够帮助研究人员析波浪的特征,预测波浪对海岸线和海洋工程结构的影响。后处理包括数据可视化、数据统计、结果验证和解释等多个方面。 描述提到的“后处理天鹅”,可能是对“postprocess_swan”的一种形象描述,但应该是指对SWAN模型输出结果的处理过程,而不是指某种生物或实体。 由于文件信息未提供具体的标签内容,我们无法从这个角度提供相关的知识点。然而,“postprocess_swan-master”文件名暗示了这可能是一个开源项目,通常以“-master”结尾的文件名称表示这是一个包含源代码、数据文件、说明文档等资源的仓库主支。 现在,让我们探讨几个与“postprocess_swan”相关的具体知识点: 1. SWAN模型简介: - SWAN全称为“Simulating Waves Nearshore”,是一种用于计算近岸波浪的数值模型。 - 它基于波浪运动的物理原理,包括波浪能量平衡方程。 - SWAN模型可以模拟波浪的成长、衰减、折射、绕射、反射和底摩擦等物理过程。 - 该模型适用于海浪、风浪、以及与海浪相关的波浪动力学问题的研究。 2. SWAN模型的应用: - 风暴潮和极端天气事件下波浪高度和周期的模拟。 - 海岸线工程的波浪载荷析,如防波堤、海堤和人工岛的波浪作用评估。 - 环境影响评估,比如石油平台、海上风电场以及港口的建设和运营对波浪场的影响。 - 海洋资源开发,例如海底油气管道铺设和维护过程的波浪条件预测。 3. SWAN模型后处理的重要性: - 通过后处理可以验证SWAN模型的准确性,确保模拟结果的可靠性。 - 后处理过程包括数据的提取、整理和析,有助于更好地理解模型输出。 - 数据可视化是后处理不可或缺的一部,可以直观地展现波浪场的布特征。 - 结果解释和验证通常需要与现场观测数据或其他模型预测结果对比。 4. 后处理过程的常见操作: - 绘制波浪玫瑰图、等值线图和波高布图等。 - 计算波浪的方向谱、频率谱和波浪能量布。 - 使用统计析工具,如计算波浪的平均周期、有效波高和波浪方向。 - 提取特定区域或时间点的波浪数据,进行局部细节析。 5. SWAN模型后处理工具和方法: - 后处理工具可能包括SWAN自带的析模块、Matlab、Python或R语言的数据处理脚本。 - 对于可视化,可能会使用专业的数据可视化软件,如Surfer、QGIS、ArcGIS或者其他开源工具。 - 模型结果通常需要与测量数据(如ADCP数据、水位计数据)或其他模拟结果进行对比验证。 6. 开源项目“postprocess_swan”的特点和功能: - 可能提供了一套完整的后处理流程模板,便于研究人员直接使用。 - 包含了多种数据析和可视化的方法,提高了工作效率。 - 作为一个开源项目,它可能具备良好的社区支持,方便用户提出问题和改进意见。 - 随着项目的发展,还可能包含用于处理SWAN模型不同版本输出结果的适应性调整功能。 通过以上知识点的阐述,我们可以看到“postprocess_swan”笔记本集合对于SWAN模型结果后处理的重要性和实用性。对于海洋工程、海岸工程以及海洋环境研究领域的科研人员来说,一个功能完善的后处理工具是他们进行数据析和科学发现的关键支持。
【正文】 电脑主板型号修改软件v1.1是一款专门针对计算机主板信息进行调整的工具,主要功能在于修改主板的品牌、型号、序列号以及BIOS版本等信息。在IT行业,这种软件的应用通常与硬件测试、系统优化或者修复某些特定问题有关。然而,需要注意的是,非法篡改这些信息可能涉及法律问题,因此在使用时应遵循合法合规的原则。 主板是计算机的核心部件,负责连接各个硬件组件并提供数据交换的平台。主板的品牌和型号决定了其兼容性和性能,而序列号则是主板的身份标识,用于区每块主板的独特性。BIOS(基本输入输出系统)则是主板上的一段固件,负责引导操作系统启动和管理硬件资源。 该软件允许用户自定义这些信息,有以下几个可能的用途: 1. **硬件测试**:在开发或测试新硬件时,制造商可能需要模拟不同类型的主板环境。通过修改主板信息,可以快速创建多种测试场景,以确保新硬件在各种配置下都能正常工作。 2. **系统优化**:某些应用程序或游戏可能会对特定主板型号有优化,修改主板信息可能有助于提升性能或解决兼容性问题。不过,这并不总是有效,也可能导致其他问题。 3. **故障排除**:在某些情况下,错误的主板信息可能导致驱动程序安装失败或系统运行异常。修改这些信息有时可以帮助诊断和解决问题。 4. **安全风险**:值得注意的是,非法修改主板信息也可能被用于欺骗目的,如逃避保修期限制或进行非法活动。因此,使用此类软件需谨慎,并且要清楚可能带来的法律风险。 在使用"电脑主板型号修改软件v1.1.exe"前,用户应确保具备一定的电脑硬件知识,理解操作可能带来的后果。同时,备份重要的数据是必要的,因为不正确的修改可能会导致系统不稳定甚至无法启动。在执行修改前,了解主板的原始信息,并在必要时咨询专业人士的建议,是非常重要的。 这款软件为特定的IT任务提供了便利,但也提醒我们在使用时要遵守法律,尊重知识产权,并充了解潜在风险。谨慎操作,合理利用,才能充发挥这类工具的效用,同时避免不必要的麻烦。

65,198

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧