怎么用C++把汉字转换为数字
一、可以用C++的stringstream。 主要原因是操作简单。
数字转字符串,int float类型 同理
字符串转数字,int float类型 同理
二、使用sprintf()函数
char str[10]; int a=1234321;
sprintf(str,”%d”,a);
char str[10]; double a=123.321;
sprintf(str,”%.3lf”,a);
char str[10]; int a=175;
sprintf(str,”%x”,a);//10进制转换成16进制,如果输出大写的字母是sprintf(str,”%X”,a)
char itoa(int value, char string, int radix); 同样也可以将数字转字符串,不过itoa()这个函数是平台相关的(不是标准里的)。
三、使用sscanf()函数
char str[]=”1234321”; int a; sscanf(str,”%d”,&a); …………. char str[]=”123.321”; double a; sscanf(str,”%lf”,&a); …………. char str[]=”AF”; int a; sscanf(str,”%x”,&a); //16进制转换成10进制。
另外也可以使用atoi(),atol(),atof()。
拓展资料:
以进行以继承和多态为特点的面向对象的程序设计。C++擅长面向对象程序设计的同时,还可以进行基于过程的程序设计,因而C++就适应的问题规模而论,大小由之。
C++不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。
看没有办法查到汉字的Unicode编码,在这里一个字对应的就是2个数字。
#include <iostream>#include <algorithm>
#include <iterator>
using namespace std;
int main()
{
typedef unsigned short us;
typedef unsigned char uc;
uc x[] = "中国";
// 转化为数字
us a[5];
copy(x, x + sizeof x, a);
// 打印
cout.setf(ios_base::hex, ios_base::basefield);
copy(a, a + sizeof a/sizeof a[0], ostream_iterator<us>(cout, " "));
cout.setf(ios_base::dec, ios_base::basefield);
// 转化为字符
uc b[sizeof x];
copy(a, a + sizeof a/sizeof a[0], b);
cout << endl << "b: " << b;
// 用数字测试
uc g[] = {0xD6, 0xD0, 0xB9, 0xFA, 0x0};
cout << endl << "g: " << g;
}
那我改哈:
#include <iostream>
#include <algorithm>
using namespace std;
typedef unsigned short us, *pus;
typedef unsigned char uc;
void FmtHexPrint(pus beg, pus end)
{
for(int i = 0; beg != end; ++beg)
{
cout << "0x" << hex << uppercase;
cout.width(2);
cout.fill('0');
cout << *beg << ", ";
i = ++i ^ 10 ? i : 0;
if(i == 0)
cout << '\n';
}
cout << "0x0";
}
int main()
{
uc ch[] =
"\
关 关 雎 鸠, 在 河 之 洲。\n\
窈 窕 淑 女, 君 子 好 逑。\n\n\
参 差 荇 菜, 左 右 流 之。\n\
窈 窕 淑 女, 寤 寐 求 之。\n\n\
求 之 不 得, 寤 寐 思 服。\n\
悠 哉 悠 哉, 辗 转 反 侧。\n\n\
参 差 荇 菜, 左 右 采 之。\n\
窈 窕 淑 女, 琴 瑟 友 之。\n\n\
参 差 荇 菜, 左 右 芼 之。\n\
窈 窕 淑 女, 钟 鼓 乐 之。\n\n\
";
// 转化为数字
us num[sizeof ch];
copy(ch, ch + sizeof ch, num);
// 打印
cout << "num:\n\n";
FmtHexPrint(num, num + sizeof num/sizeof num[0]);
// 转化为字符
uc toCh[sizeof ch];
copy(num, num + sizeof num/sizeof num[0], toCh);
cout << "\n\ntoCh:\n\n" << toCh << endl;
// 用数字测试
uc numTest[] =
{
0xB9, 0xD8, 0x20, 0xB9, 0xD8, 0x20, 0xF6, 0xC2, 0x20, 0xF0,
0xAF, 0xA3, 0xAC, 0x20, 0xD4, 0xDA, 0x20, 0xBA, 0xD3, 0x20,
0xD6, 0xAE, 0x20, 0xD6, 0xDE, 0xA1, 0xA3, 0x0A, 0xF1, 0xBA,
0x20, 0xF1, 0xBB, 0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE, 0xA3,
0xAC, 0x20, 0xBE, 0xFD, 0x20, 0xD7, 0xD3, 0x20, 0xBA, 0xC3,
0x20, 0xE5, 0xCF, 0xA1, 0xA3, 0x0A, 0x0A, 0xB2, 0xCE, 0x20,
0xB2, 0xEE, 0x20, 0xDC, 0xF4, 0x20, 0xB2, 0xCB, 0xA3, 0xAC,
0x20, 0xD7, 0xF3, 0x20, 0xD3, 0xD2, 0x20, 0xC1, 0xF7, 0x20,
0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0xF1, 0xBA, 0x20, 0xF1, 0xBB,
0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE, 0xA3, 0xAC, 0x20, 0xE5,
0xBB, 0x20, 0xC3, 0xC2, 0x20, 0xC7, 0xF3, 0x20, 0xD6, 0xAE,
0xA1, 0xA3, 0x0A, 0x0A, 0xC7, 0xF3, 0x20, 0xD6, 0xAE, 0x20,
0xB2, 0xBB, 0x20, 0xB5, 0xC3, 0xA3, 0xAC, 0x20, 0xE5, 0xBB,
0x20, 0xC3, 0xC2, 0x20, 0xCB, 0xBC, 0x20, 0xB7, 0xFE, 0xA1,
0xA3, 0x0A, 0xD3, 0xC6, 0x20, 0xD4, 0xD5, 0x20, 0xD3, 0xC6,
0x20, 0xD4, 0xD5, 0xA3, 0xAC, 0x20, 0xD5, 0xB7, 0x20, 0xD7,
0xAA, 0x20, 0xB7, 0xB4, 0x20, 0xB2, 0xE0, 0xA1, 0xA3, 0x0A,
0x0A, 0xB2, 0xCE, 0x20, 0xB2, 0xEE, 0x20, 0xDC, 0xF4, 0x20,
0xB2, 0xCB, 0xA3, 0xAC, 0x20, 0xD7, 0xF3, 0x20, 0xD3, 0xD2,
0x20, 0xB2, 0xC9, 0x20, 0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0xF1,
0xBA, 0x20, 0xF1, 0xBB, 0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE,
0xA3, 0xAC, 0x20, 0xC7, 0xD9, 0x20, 0xC9, 0xAA, 0x20, 0xD3,
0xD1, 0x20, 0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0x0A, 0xB2, 0xCE,
0x20, 0xB2, 0xEE, 0x20, 0xDC, 0xF4, 0x20, 0xB2, 0xCB, 0xA3,
0xAC, 0x20, 0xD7, 0xF3, 0x20, 0xD3, 0xD2, 0x20, 0xC6, 0x64,
0x20, 0xD6, 0xAE, 0xA1, 0xA3, 0x0A, 0xF1, 0xBA, 0x20, 0xF1,
0xBB, 0x20, 0xCA, 0xE7, 0x20, 0xC5, 0xAE, 0xA3, 0xAC, 0x20,
0xD6, 0xD3, 0x20, 0xB9, 0xC4, 0x20, 0xC0, 0xD6, 0x20, 0xD6,
0xAE, 0xA1, 0xA3, 0x0A, 0x0A, 0x0
};
cout << "numTest:\n\n" << numTest << endl;
}
一个汉字占两个字节,所以可以用short int表示, 例如
char szBuf[] = "一个汉字占两个字节";
short int *p = (short*)szBuf;
//这样p[0] --- p[8]就代表汉字了, 不过是负的哦
unsigned short *p = (unsigned short*)szBuf;//就是正数了
翻译回来就这样
char *pChar = (char*)p;
建一个hash_map
可以找到汉字字库里的字,再按顺序将汉字和数字放到一个结构体中间
在c语言编辑过程中如何输入汉字?
定义一个字符串变量,这个变量的值中就可以输入汉字了。汉字是多字节的,一个char放不下,可以使用字符数组,但需要给数组分配空间,或者使用string 例如:include<stdio.h>int main(void){char a[7]="你好";scanf("%*s",a);printf("%s\\n",a);return 0;} ...
C语言,汉字转二进制
我的印象中,每一个汉字是由两个字符组成的,只不过每个字符的值都是负数。不管是汉字还是英文,你直接字符串读入就行了,然后跟处理英文字符一样的方法来处理这个字符串就行了。只要你的加密算法没写错,肯定可以还原的
C# 怎么把汉字转换成16进制
string[] strArr = new string[bytes.Length];Console.WriteLine("16进制显示'你好':");for (i = 0; i < bytes.Length; i++){ strArr[i] = bytes[i].ToString("x");Console.Write(strArr[i]+" ");} Console.WriteLine();Console.WriteLine("从16进制转换回汉字:");for (i = 0...
请问要用C实现输入汉字然后识别并相应读取事先已经录制好的汉字录音文...
输入的汉字编号,然后录音文件也编号。然后编号去查找,建立一个字典机制的数据结构。
请问在C语言中如何输出汉字?
1、引入标准输入输出库:sdtio.h。2、定义字符串形式的汉字(采用字符数组存储)。3、使用printf函数,或者puts函数输出字符串形式的汉字。例如:include<stdio.h>int main(){ char str[]="输出汉字"; printf("%s\\n",str); puts(str); return 0;}\/*运行结果:输出汉字输出汉字*\/...
GB与BIG5汉字编码的转化函数(c语言)
include <stdio.h> include <stdlib.h> include <locale.h> include <wchar.h> int main(void){ char *temp;char sim[32]="狗";char tra[32];wchar_t uni[32];temp=setlocale(LC_ALL,".936");puts(temp);printf("%s\\t%2x %2x\\r\\n",sim,(unsigned char)(sim[0]),(unsigned ...
c语言怎样才能输出中文???(最简单的方法)
定义一个字符串变量,在这个变量的值中就可以输入中文了。汉字是多字节的,一个char放不下,可以使用字符数组,但需要给数组分配空间,或者使用string。例如:include<stdio.h> int main(void){ char a[128];printf("请输入所需输出的汉字:");scanf("%s",a);printf("%s\\n",a);return 0;...
excel中如何将汉字转换为拼音
excel中将汉字转换为拼音,主要通过word的拼音指南命令进行过度得到的,现在就分享设置的具体过程和截图,供朋友们参考。首先启动excel2010,执行文件-打开命令,打开一份需要制作拼音的文本内容。选择文本内容,执行ctrl+c复制操作,接着粘贴到wps文字中,选择只粘贴文本。接着执行ctrl+a全选,执行开始-拼音...
汉字转拼音
当需要将大量的文字转成对应的拼音时,如果一个个标注设置会很麻烦,可以将文字放到excel表格中进行批量处理。软件:excel 电脑:WIN10 软件:3.2免费 1、以excel2013为例;如下图,将需要处理的文字放置到excel表格中:2、首先全部选中需要处理的文字,并使用Ctrl+C,进行复制,如下图所示:3、将上...
哪位大神能帮我吧c语言中的汉字转换一下啊 ?
0x8A,0x20,0x8C,0x20,0x88,0x20,0xFB,0xFE,0x88,0x00,0x89,0xF8,0x89,0x08,0x89,0x08,0xF9,0x08,0x89,0x08,0x81,0xF8,0x01,0x08, \/*皓*\/ };int main(){ int gdrive=DETECT,gmode,errorcode;void drawmat(char *mat,int matsize,int x,int y,int color);initgraph(...
澹委古纯: 一、可以用C++的stringstream. 主要原因是操作简单. 数字转字符串,int float类型 同理 字符串转数字,int float类型 同理 二、使用sprintf()函数 char str[10]; int a=1234321; sprintf(str,”%d”,a); char str[10]; double a=123.321; sprintf(str,...
轮台县15853521636: 怎么用C++把汉字转换为数字 - ?
澹委古纯: #include <iostream>#include <algorithm>#include <iterator> using namespace std; int main() { typedef unsigned short us; typedef unsigned char uc; uc x[] = "中国"; // 转化为数字 us a[5]; copy(x, x + sizeof x, a); // 打印 cout.setf(ios_base::hex, ...
轮台县15853521636: 用C++写一个程序题目是把中文拼音转换成数字输出(即把a~z 换成1~26)每个拼音用空格隔开输出时用/隔开 每个拼音中的每个小写字母对应的数字用点隔开 例如 输入 ni hao 输出 14.9./8.1.15./输入 xie 输出24.9.5./ - ?
澹委古纯: 代码如下:#include<iostream> #include <cstring> using namespace std; int main() {char str[500];cout<<"输入拼音:";gets(str);for (int i=0; i<strlen(str)+1; i++){if (str[i]>='a'&&str[i]<='z'){int s=str[i]-'a'+1;cout<<s<<".";}if (str[i]==' '||str[i]=='\0'){cout<<'/';}}cout<<endl;return 0; }
轮台县15853521636: 有没有将字符转化为数字的C++函数? - ?
澹委古纯: atof atoi stdlib.h里 char a[]="1234"; int d; d=atoi(a); printf("%d",d);
轮台县15853521636: 如何在c或c++中将单个字符型数据转换为相应的数字型数据 - ?
澹委古纯: 把单个字符型数据转换为相应的数字,只需用强制转换符即可,不需任何函数,例如: char Str='A'; int X=(int)Str; 这样,X就等于A的ASCII码65.如果你是 char Str='9'; //然后想得到9这个数字,而不是9的ASCII码,那么只需要如下即可: int X=(int)Str-48; //因为字符0的ASCII码是48,所以只需要减去48,就是这个字符的数值.
轮台县15853521636: VC++中如何将字符串转换成整型数字 - ?
澹委古纯: atoi函数是c的函数,它的输入参数是char *类型.你声明了string h变量,string是C++类型,C函数不识别这个C++类型.两种方法1.按照c方式定义h,char h[20];数组数值你可以根据实际情况修改.2.按照C++方式,使用string类的c_str函数,如k=atoi(h.c_str()),c_str函数可以将string类型转换为c的char *类型.
轮台县15853521636: c++里怎样将汉字转化为数字 - ?
澹委古纯: string a; a = "姓名"; 就可以啊 ~~~打印出来就 可以了
轮台县15853521636: C++ 字符串转化成对应的数字 例如 输入abc...输出012...?
澹委古纯: 可以将abcdef.......分别赋值为0123456..... //比较笨的方法 也可以用 for循环赋值
轮台县15853521636: c++怎么将字符'3'转换为整型数字3啊? - ?
澹委古纯: 字符符型转换整形用强制转换就行,可以参考下面的代码: char c='B' ; int a ; a = (int)c ; 如果是字符'0'到'9'转成0-9 char c='8' ; int a ; a =(int) (c - '0') ; 扩展资料: C++语言编译系统提供的内部数据类型的强制转换规则如下:1、执行算术...
轮台县15853521636: 如何在c或c++中将字符型数据转换为相应的数字型数据 - ?
澹委古纯: #include <stdio.h> #include <stdlib.h> /* 将字符串“1635”转换为数字1635 */ int todo(const char * str) {int value=0,i=1,r=sizeof(str)-1;for(;r>=0;value+=i*(str[r]-'0'),--r,i*=10);return value; } int main(int argc, char *argv[]) {char * a="1635";printf("%d\n",todo(a)); system("PAUSE");return 0; }