字符串处理

一 字符串长度

#ifdef __UNICODE

#define _tcslen         wcslen

#else

#define _tcslen     strlen

#endif  

_tcslen(TEXT("hello"));


二 字符串复制,连接

_tcscpy_s

_tcscat_s

首先验证参数值,指针是否为空,整数是否在有效范围,枚举值是否有效,缓冲区是否足够,

任何一项失败返回errno_t值指出成功失败,可在输出窗口查看失败原因

TCHAR  str[7]= TEXT("hello");
 errno_t result = _tcscpy_s(str, _countof(str), TEXT("012345"));

_coutof(str)字符数,缓冲区大小的字符数时

sizeof(str)字节数     分配内存块时


三Windows字符串函数

头文件:#include<Shlwapi.h>

int WINAPI CompareStringW(
    _In_ LCID Locale,                                                          
    _In_ DWORD dwCmpFlags,
    _In_NLS_string_(cchCount1) PCNZWCH lpString1,
    _In_ int cchCount1,
    _In_NLS_string_(cchCount2) PCNZWCH lpString2,
    _In_ int cchCount2
    );

参数详见:https://msdn.microsoft.com/en-us/library/windows/desktop/dd317759(v=vs.85).aspx

第二个参数

//
//  String Flags.
//
#define NORM_IGNORECASE           0x00000001  // 忽略大小写
#define NORM_IGNORENONSPACE       0x00000002  // 忽略 nonspacing字符
#define NORM_IGNORESYMBOLS        0x00000004  // 忽略符号
#define LINGUISTIC_IGNORECASE     0x00000010  // 忽略大小写
#define LINGUISTIC_IGNOREDIACRITIC 0x00000020  // 忽略nonspacing字符
#define NORM_IGNOREKANATYPE       0x00010000  // 不区分平假名和片假名字符
#define NORM_IGNOREWIDTH          0x00020000  // 不区分同一字符的单字节和双字节形式
#define NORM_LINGUISTIC_CASING    0x08000000  // 区分大小写?

INT ret=CompareString(GetThreadLocale(),NORM_IGNORECASE, TEXT("hello"),-1, TEXT("Hello"),-1);    //返回2为相等
 cout << ret<< endl;

字符串包括文件名、路径、XML元素/属性以及注册表项/值等。非常快,针对于需要在用户界面显示的字符串,需要考虑用户区域的设置则使用CompareString

int WINAPI CompareStringOrdinal(
    _In_NLS_string_(cchCount1) LPCWCH lpString1,
    _In_ int cchCount1,
    _In_NLS_string_(cchCount2) LPCWCH lpString2,
    _In_ int cchCount2,
    _In_ BOOL bIgnoreCase
    );

参数详见:https://msdn.microsoft.com/zh-cn/library/dd317762.aspx

 int retcode = CompareStringOrdinal(TEXT("hello"), -1, TEXT("Hello"), -1, TRUE);
 cout << retcode << endl;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值