用输出半角和全角字符

#include <stdio.h>
#include <string.h>


int main()  
{  
	char szText[] = "我是CIW.";  
	char szChinese[3] = {0};  
	
	int i = 0, nLen = strlen(szText);  
	for(; i < nLen; i++)  
	{  
		if( szText[i] >= 0 && szText[i] <= 127 ) //不是全角字符?
		{
			printf("%c\n", szText[i]);  
		}
		else									//是全角字符  
		{
			szChinese[0] = szText[i];
			szChinese[1] = szText[i + 1];
			printf("%s\n", szChinese);
			i++;								//中文是2个字节,所以i++  

		}
	}  
	return 0;  
}

计算文件大小


#include <sys/types.h>   
#include <sys/stat.h>   
#include <iostream.h>
#include <string>

using namespace std;

int getFileSize(string sFileName)
{
    struct stat buf;
    int iRet = stat(sFileName.c_str(), &buf);
    if (iRet == -1)
        return NULL;
    return buf.st_size;
}

void main()
{
	int i = getFileSize("E:\\反恐精英csV1.6中文版.exe");
	cout<<i<<endl;
}


去除字符串空格 反转字符串


#include<iostream>
#include<string>

using namespace std;

void  strallcut(char *str)
{
    int i,j=0;
    char sp[512];
    for (i = 0; *(str + i) != '\0'; i++) {
        if (*(str + i) == ' ' )
            continue;
        sp[j++]=*(str + i);
    }
    sp[j] = 0;
    strcpy(str, sp);
} 

void reverse(char s[])
{
	for(int i=0,j=strlen(s)-1;i<j;++i,--j)
	{
		int c = s[i];
		s[i] = s[j];
		s[j] = c;
	}
}
void main()
{
	char temp[100] = "  hello  zhangsan word  ";
	cout<<temp<<endl;
	strallcut(temp);
	cout<<temp<<endl;
	reverse(temp);
	cout<<temp<<endl;
}


统计文档中单词出现的次数


#include <iostream>
#include <fstream>
#include <string>
#include <cstdlib>
#include <map>

using namespace std;

void main()
{
	
	ifstream read;
	typedef map<string,int> instrmap;
	instrmap coll;
	map<string,int>::iterator it1;
	ofstream display("word.txt");
	read.open("words.txt");
	coll.clear();
	while(!read.eof())
	{
		string word;
		read>>word;
		coll[word]++;
	}
	for(it1 = coll.begin();it1 != coll.end();it1++)
	cout<<it1->first<<" "<<it1->second<<endl;
	if (!display)
	{
		cout<<"不能打开文件 word.txt"<<endl;
	}
	for(it1 = coll.begin();it1 != coll.end();it1++)
	{
		if (it1->first!="the"&&it1->first!="an"&&it1->first!="a"&&it1->first!="but"&&it1->first!="and"&&it1->first!=" ")
		{
			display<<"单词"<<it1->first<<" "<<"出现了"<<it1->second<<"次"<<endl;
		}
			
	}

	read.close();
	display.close();

	
}


<think>我们正在讨论全角字半角的区别,特别是数字5。 根据引用[1]:全角字半角是指在计算机处理文本时,字占用的空间不同。在东亚地区(如中国、日本、韩国)使用的字集中尤其常见。 全角字:通常占用两个字节(在早期系统中,一个全角字相当于两个半角的宽度),用于汉字、假名等。全角数字也属于全角字,它们与汉字等宽,因此在排版时与汉字对齐。 半角:通常占用一个字节,宽度是汉字的一半,主要是英文字母、数字常用号。 全角数字5半角数字5的区别: 1. 编码存储: - 半角数字5:在ASCII编码中为0x35(十进制53),占用1个字节。 - 全角数字5:在GBK、Big5、Shift-JIS等双字节字集中,通常用两个字节表示。例如,在GBK编码中,全角数字5的编码是0xA3B5(第一个字节0xA3,第二个字节0xB5)。 2. 显示宽度: - 半角数字5:在等宽字体中占据1个字宽度。 - 全角数字5:在等宽字体中占据2个字宽度(与一个汉字等宽)。 3. 使用场景: - 半角数字5:通常用于英文文本或编程代码中。 - 全角数字5:通常用于中文、日文等东亚文字文本中,以保持数字与汉字对齐。 示例: 半角数字5:`5` (看起来较窄) 全角数字5:`5` (看起来较宽,且与汉字宽度一致) 在编程中,如果误用了全角数字,编译器或解释器会将其视为非法字,导致语法错误(如之前提到的ModelSim报错)。 转换方法: 根据引用[3],我们可以使用Python进行全角半角的转换。例如,将全角数字转换为半角数字: 全角数字5(Unicode码点为0xFF15)转换为半角数字5(Unicode码点0x35)只需减去一个偏移量(0xFEE0)。 转换公式: 半角 = 全角字 - 0xFEE0 (对于非空格字) 注意:空格字需要特殊处理,全角空格(0x3000)对应半角空格(0x20)。 因此,在编程中,我们应始终使用半角数字(包括其他号)以避免语法错误。 相关问题: §§相关问题§§ 1. 如何检测转换字串中的全角字半角? 2. 在哪些编程语言中全角字会导致语法错误? 3. 全角字在数据库存储中会带来什么问题?</think>### 全角数字5与半角数字5的区别详解 #### 1. **本质区别** | 特性 | 半角数字5 | 全角数字5 | |--------------|--------------------|--------------------| | **Unicode编码** | U+0035 | U+FF15 | | **字节占用** | 1字节(ASCII) | 2-4字节(UTF-8) | | **显示宽度** | 标准英文字宽度 | 等于一个汉字宽度 | | **输入方式** | 英文键盘直接输入 | 需切换中文输入法 | | **存储形式** | `00110101`(二进制)| `11101111 10111101 10010101`(UTF-8) | #### 2. **视觉对比** ```plaintext 半角:0123456789 ← 与英文字母等宽 全角:0123456789 ← 与汉字等宽 ``` ▷ **半角5**:`5`(宽度同字母"A") ▷ **全角5**:`5`(宽度同汉字"中") #### 3. **技术差异** - **内存占用**(UTF-8编码): - 半角5:`0x35`(1字节) - 全角5:`0xEF 0xBC 0x95`(3字节) - **编程识别**: ```python # Python示例 print(len("5")) # 输出1(半角) print(len("5")) # 输出1(显示长度)但实际占用3字节 print(ord("5")) # 输出53(U+0035) print(ord("5")) # 输出65301(U+FF15) ``` #### 4. **应用场景差异** | 场景 | 推荐使用 | 原因 | |--------------|------------|-------------------------| | 编程代码 | **半角5** | 编译器仅识别ASCII字 | | 中文排版 | **全角5** | 与汉字宽度统一,排版美观 | | 数据库存储 | **半角5** | 节省存储空间,避免转换问题 | | 日/韩文文档 | **全角5** | 合东亚文字排版规范 | #### 5. **相互转换方法** - **Python转换**(引用[3]): ```python def full2half(ustr): return ''.join(chr(0x3000 if c == 0x0020 else c-0xfee0) if 0xff00 < c < 0xff80 else chr(c) for c in map(ord, ustr)) print(full2half("5")) # 输出半角"5" ``` - **Oracle转换**(引用[2]): ```sql SELECT TO_SINGLE_BYTE('5') FROM dual; -- 返回半角"5" ``` #### 6. **错误案例分析** Verilog报错 `near "5": syntax error` 的根本原因: ▸ 代码中混入了全角数字 `5`(U+FF15),编译器无法识别非ASCII字 ▸ 解决方案:用文本编辑器全局替换全角数字为半角(如VS Code的正则搜索:`[\uFF10-\uFF19]` → 匹配所有全角数字) > 💡 **编程黄金规则**: > **所有代码必须使用半角**,包括数字、括号运算全角字仅用于自然语言文本排版[^1]。 --- ### 相关问题 1. **如何检测代码中的全角字?** - 推荐使用VS Code插件**"Gremlins Tracker"** 可视化显示隐藏字 - 正则表达式检测:`[\uFF00-\uFFFF]`(匹配所有全角字) 2. **为什么数据库需要统一字编码?** - 全角/半角混用会导致查询失败(如 `WHERE id = '5'` 无法匹配 `id=5`) - 存储空间差异:全角数字占用3倍存储空间(UTF-8) 3. **如何避免跨平台编码问题?** - 统一文件编码为 **UTF-8 without BOM** - 在.gitattributes中设置:`*.v text eol=lf charset=utf-8`
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值