在项目开发中,经常使用到字符串分割, 并且将其转换为整形(比如IP的分割获取,MAC地址的分割获取等),代码如下:

#ifndef _UNICODE
void StrToIntData( char *pStr,int nIntData[],const char * pTok )
{ char *pStrPos = NULL;
char *pNextToken = NULL;
int nPos = ; pStrPos = strtok_s(pStr,pTok,&pNextToken); while (pStrPos)
{
nIntData[nPos] = atoi(pStrPos);
nPos ++;
pStrPos = strtok_s(NULL,pTok,&pNextToken);
} } char * IntToStrData(int nData)
{
static char str[MAX_PATH] = {};
itoa(nData,str,);
return str;
} #else
void StrToIntData( wchar_t *pStr,int nIntData[],const wchar_t * pTok )
{ wchar_t *pStrPos = NULL;
wchar_t *pNextToken = NULL;
int nPos = ; pStrPos = wcstok_s(pStr,pTok,&pNextToken); while (pStrPos)
{
nIntData[nPos] = _ttoi(pStrPos);
nPos ++;
pStrPos = wcstok_s(NULL,pTok,&pNextToken);
} } wchar_t * IntToStrData(int nData)
{
static wchar_t str[MAX_PATH] = {};
_itot(nData,str,);
return str;
} #endif
#include <locale.h>
#include <Shlwapi.h> #pragma comment(lib,"Shlwapi.lib") void CharNormalOp();
void WcharNoramlOp(); int main(int argc,char *argv[])
{
setlocale(LC_ALL,"chs"); CharNormalOp();
printf("\r\n");
WcharNoramlOp();
} void CharNormalOp()
{
char str1[MAX_PATH] = {'\0'};
char str2[MAX_PATH] = {'\0'}; //strcpy
strcpy(str2,strcpy(str1,"abcde@fgh@tjk@lmn@123009333"));
puts(str1);
puts(str2); //strcat
strcat(str2,strcat(str1,"##kkkmmm##"));
puts(str1);
puts(str2); //strcmp
if( == strcmp(str1,str2))
{
puts("str1 equals str2");
} //忽略大小写比较
if( == stricmp(str1,str2))
{
puts("str1 eaquals str2 when ignore case");
} //字符串查找
if(strstr(str2,str1))
{
puts("str2 contains str1");
} //字符串忽略大小写查找
if(StrStrIA(str1,"ABCD"))
{
puts("str1 contains abcd when ignore case");
} //分割字符串
char *cur = str2;
char *p = strtok(cur,"@");
while(p)
{
printf("sub string = %s\r\n",p);
cur += (strlen(p)+strlen("@"));
p = strtok(cur,"@");
}
} void WcharNoramlOp()
{
WCHAR str1[MAX_PATH] = {L'\0'};
WCHAR str2[MAX_PATH] = {L'\0'}; //wcscpy
wcscpy(str2,wcscpy(str1,L"我们@学习@发展@KK3@123"));
printf("str1=%S\r\n",str1);
printf("str2=%S\r\n",str2); //strcat
wcscat(str2,wcscat(str1,L"##km环境##"));
printf("str1=%S\r\n",str1);
printf("str2=%S\r\n",str2); //strcmp
if( == wcscmp(str1,str2))
{
printf("str1 equals str2\r\n");
} //忽略大小写比较
if( == wcsicmp(str1,str2))
{
printf("str1 eaquals str2 when ignore case\r\n");
} //字符串查找
if(wcsstr(str2,str1))
{
printf("str2 contains str1\r\n");
} //字符串忽略大小写查找
if(StrStrIW(str1,L"kk3"))
{
printf("str1 contains kk3 when ignore case\r\n");
} //分割字符串
WCHAR *cur = str2;
WCHAR *p = wcstok(cur,L"@");
while(p)
{
printf("sub wstring = %S\r\n",p);
cur += (wcslen(p)+wcslen(L"@"));
p = wcstok(cur,L"@");
} }

原贴地址:http://blog.csdn.net/faithzzf/article/details/51984197

  

c\c++ 中字符串分割,并且转换为整形数据的更多相关文章

  1. JavaScript中字符串分割函数split用法实例

    这篇文章主要介绍了JavaScript中字符串分割函数split用法,实例分析了javascript中split函数操作字符串的技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了JavaSc ...

  2. 标准C中字符串分割方法

    ◆ 使用strtok函数分割. 原型:char *strtok(char *s, char *delim); strtok在s中查找包含在delim中的字符并用NULL('\0')来替换,直到找遍整个 ...

  3. Shell中字符串分割的三种方法

    问题:对于’1,2,3,4,5’这样的字符串输出采用,分隔开的1 2 3 4 5 特征:在字符串中没有空格 解决方法1: #!/bin/bash var=’1,2,3,4,5’ var=${var// ...

  4. C中字符串分割函数strtok的一个坑

    strtok的典型用法是: p = strtok(s4, split); while(p != NULL){ printf("%s\n", p); p = strtok(NULL, ...

  5. lua脚本中字符串分割split

    function split( s, c ) for item in string.gmatch( s, "(.-)"..c) do print(item); end end s ...

  6. MFC中如何分割CString类型的数据

    [才疏学浅,难免有纰漏,若有不正确的地方,欢迎指教] MFC中有一个库函数 Tokenize(); 函数原型:CStringT Tokenize( PCXSTR pszTokens , int& ...

  7. 【Python 19】BMR计算器3.0(字符串分割与格式化输出)

    1.案例描述 基础代谢率(BMR):我们安静状态下(通常为静卧状态)消耗的最低热量,人的其他活动都建立在这个基础上. 计算公式: BMR(男) = (13.7*体重kg)+(5.0*身高cm)-(6. ...

  8. mysql 字符串分割 和 动态执行拼接sql

    本人以前主要用的是MSSQL,最近项目在使用MYSQL,自己是一个 典型的小白.今天就记录一下 一个mysql存储过程,里面需要分割字符串和 动态执行sql语句. 关于字符串 分割我开始使用 LOCA ...

  9. Delphi中stringlist分割字符串的用法

    Delphi中stringlist分割字符串的用法 TStrings是一个抽象类,在实际开发中,是除了基本类型外,应用得最多的. 常规的用法大家都知道,现在来讨论它的一些高级的用法. 1.CommaT ...

随机推荐

  1. [经验] 使用 jQuery+JSON 实现国际化

    技术选型关键词:  [spring boot] [jQuery] [JSON] [JSP] 前言: 关于国际化, 我在一开始的时候就有一个误解, 我认为所谓国际化就是编写一段高技术含量的代码, 然后这 ...

  2. 在CentOS中配置java jdk环境

    方法一. 1.查看yum库中都有哪些jdk版本(暂时只发现了openjdk) [root@localhost ~]# yum search java|grep jdkldapjdk-javadoc.x ...

  3. 回文数索引(string类erase解题)

    题目描述 给定一个仅由小写字母组成的字符串.现在请找出一个位置,删掉那个字母之后,字符串变成回文.请放心总会有一个合法的解.如果给定的字符串已经是一个回文串,那么输出-1. 输入描述: 第一行包含T, ...

  4. Day3-L-Cup HDU2289

    The WHU ACM Team has a big cup, with which every member drinks water. Now, we know the volume of the ...

  5. 「NOIP2017」列队

    传送门 Luogu 解题思路 一眼平衡树,应该没问题吧? 但我们一定要反应过来,单点的维护是非常之困难的,因为这是一个网格图而不仅仅是一条序列. 我们要考虑把修改操作全都放在序列上进行. 其实题面里是 ...

  6. 【高软作业4】:Tomcat 观察者模式解析 之 Lifecycle

    一. 预备 如果你是Windows用户,使用Eclipse,并且想自行导入源码进行分析,你可能需要:Eclipse 导入 Tomcat 源码 如果你已遗忘 观察者模式,那么你可以通过该文章回顾:设计模 ...

  7. 前端学习笔记系列一:15vscode汉化、快速复制行、网页背景图有效设置、 dl~dt~dd标签使用

    ctrl+shift+p,调出configure display language,选择en或zh,若没有则选择安装使用其它语言,则直接呼出扩展程序搜索界面,选择,然后安装,重启即可. shift+a ...

  8. Lesson 6 The sporting spirit

    How does the writer describe sport at the international level? I am always amazed when I hear people ...

  9. 使用Vue 和 内网穿透:返回 invalid host header

    原因:新版的webpack-dev-server出于安全考虑,默认检查hostname,如果它不是配置内的,将会中断访问. -------------------------------------- ...

  10. docker安装mysql中注意事项

    前言 怎么安装docker和拉mysql镜像不是本文的重点,在这里我主要讲我安装mysql容器的三个注意事项:启动容器, 修改密码,远程登录 run容器 docker run -di --name f ...