第二章:字符处理

/*TCHAR;
LPTSTR;
LPCTSTR;*/

TCHAR szBuf1[100]={0};
TCHAR szBuf2[100]={0};

//获得字符串长度
//SIZE_T nLen=strlen(szBuf1);
SIZE_T nLen=_tcslen(szBuf1); 	//如果在UNICODE下,"中国"此函数返回2,所以如果要得到其字节数,要*sizeof(TCHAR)

//拼接字符串
//strcat(szBuf1,szBuf2);
_tcscat_s(szBuf1,szBuf2);

//拼接n个字符串
//strcat(szBuf1,szBuf2,10);
_tcsncat_s(szBuf1,szBuf2,10);

//获得输入
//gets(szBuf1);
_getts_s(szBuf1);

//数字转换为字符
int n=100;
//itoa(n,szBuf1,10);
_itot_s(n,szBuf1,10);

//字符转换为数字
int a=_tstoi(szBuf1);
double f=_tstof(szBuf1);

//格式化字符串
//sprintf(szBuf1,"%s%d","123",123);
_stprintf_s(szBuf1,100,_T("%s%d"),_T("123"),123);

//查找字符出现的位置
//strchr(szBuf1,'A');
_tcschr(szBuf1,'A');

//比较两个字符串
//strcmp(szBuf1,szBuf2);
_tcscmp(szBuf1,szBuf2);

//根据语言集比较字符串
//strcoll(szBuf1,szBuf2);
_tcscoll(szBuf1,szBuf2);

//字符拷贝
//strcpy(szBuf1,szBuf2);
_tcscpy_s(szBuf1,szBuf2);

//将时间格式化到字符串
time_t tm;
//ctime(&tm);
_tctime_s(szBuf1,100,&tm);

//打印字符串
//printf("123");
_tprintf_s(_T("123\r\n"));

//通过参数列表格式化字符串
//vsprintf(szBuf1,"%s%d",p);
_vstprintf_s(szBuf1,100,_T("%s%d"),p);

//查找字串,返回值为找到的字串的指针,如果找不到,则返回NULL
//strstr(str1,strFind);
_tcsstr(str1,strFind);

//输出字符
//printf("------------");
_tprintf_s(_T("-------------\r\n"));

UNICODE下写文件要在文件头写入0xFEFF,表示打开方式为UNICODE,这样不会产生乱码 

 

1:Unicode一般指UTF-16,占两个字节

2:UTF-8有些字符占1个字节,有些2个字节,有些3个字节,有些4个字节;UTF-32全都4个字节

3:char c='A';char szBuf[100]="string";

4:c/c++编译器定义了wchar_t类型,占2个字节wchar_t c=L'A';wchar_t szBuf[100]=L"string";

5:windows定义了//1字节typedef char    CHAR;typedef CHAR* PCHAR;typedef CHAR* PSTR;typedef CONST CHAR* PCSTR;//2字节typedef wchar_t WCHAR;typedef WCHAR* PWCHAR;typedef WCHAR* PWSTR;typedef CONST WCHAR* PCWSTR;

6:兼容字符处理字符TCHAR;指针PTCHAR,PTSTR;const指针PCTSTR;使用方式为:TCHAR c=TEXT('A');TCHAR szBuf[100]=TEXT("string");

7:Windows内部用Unicode,如果传入ANSI字符串,会进行一次转换,这回带来性能开销

8:API函数中,后缀W代表wide,也就是Unicode,后缀A代表ANSI

9:C运行库strlen对应wcslen,两者兼容版本是_tcslen

10:strcpy对应wcscpy,者兼容版本是_tcscpy

11安全字符串函数,在每个者兼容版本是后面加_s,如_tcscpy_s

#include "stdafx.h"
#include "Windows.h"
#include "StrSafe.h"
#include "stdlib.h"
int _tmain(int argc, _TCHAR* argv[])
{
	TCHAR szDes[3]=TEXT("");
	TCHAR szRes[4]=TEXT("123");
	_tcscpy_s(szDes,_countof(szDes),szRes);
	return 0;
}

_s函数会返回S_OK表示调用成功,但在返回失败之前,如果调用错误,会弹出对话框

检查错误的时候,Debug版会显示错误对话框,Release版本会直接终止程序

可以添加一个函数定义产生错误的回调

调用函数_set_invalid_parameter_handler注册自定义函数,自定义函数原型参考InvalidParamenterHandler();

如果要禁止对话框的出现,在程序开头定义_CrtSetReportMode(_CRT_ASSERT,0);

 

 

void *memchr( const void *buffer, int ch, size_t count );
功能:函数在buffer指向的数组的count个字符的字符串里查找ch 首次出现的位置。返回一个指针,指向ch 在字符串中首次出现的位置, 如果ch 没有在字符串中找到,返回NULL。

int memcmp( const void *buffer1, const void *buffer2, size_t count );
功能:函数比较buffer1 和 buffer2的前count 个字符。

void *memcpy( void *to, const void *from, size_t count );
功能:函数从from中复制count 个字符到to中,并返回to指针。 如果to 和 from 重叠,则函数行为不确定。

 http://msdn.microsoft.com/en-us/library/tsbaswba(VS.80).aspx

兼容版本 SBCS(单字节) MBCS(单字节和多字节) _UNICODE

_cgetts

_cgets

_cgets

_cgetws

_cgetts_s

_cgets_s

_cgets_s

_cgetws_s

_cputts

_cputs

_cputs

_cputws

_fgettc

fgetc

fgetc

fgetwc

_fgettchar

_fgetchar

_fgetchar

_fgetwchar

_fgetts

fgets

fgets

fgetws

_fputtc

fputc

fputc

fputwc

_fputtchar

_fputchar

_fputchar

_fputwchar

_fputts

fputs

fputs

fputws

_ftprintf

fprintf

fprintf

fwprintf

_ftprintf_s

fprintf_s

fprintf_s

fwprintf_s

_ftscanf

fscanf

fscanf

fwscanf

_ftscanf_s

fscanf_s

fscanf_s

fwscanf_s

_gettc

getc

getc

getwc

_gettch

_getch

_getch

_getwch

_gettchar

getchar

getchar

getwchar

_gettche

_getche

_getche

_getwche

_getts

gets

gets

getws

_getts_s

gets_s

gets_s

getws_s

_istalnum

isalnum

_ismbcalnum

iswalnum

_istalpha

isalpha

_ismbcalpha

iswalpha

_istascii

isascii

isascii

iswascii

_istcntrl

iscntrl

iscntrl

iswcntrl

_istdigit

isdigit

_ismbcdigit

iswdigit

_istgraph

isgraph

_ismbcgraph

iswgraph

_istlead

Always returns false

_ismbblead

Always returns false

_istleadbyte

Always returns false

isleadbyte

Always returns false

_istlegal

Always returns true

_ismbclegal

Always returns true

_istlower

islower

_ismbclower

iswlower

_istprint

isprint

_ismbcprint

iswprint

_istpunct

ispunct

_ismbcpunct

iswpunct

_istspace

isspace

_ismbcspace

iswspace

_istupper

isupper

_ismbcupper

iswupper

_istxdigit

isxdigit

isxdigit

iswxdigit

_itot

_itoa <

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值