在项目开发中,经常使用到字符串分割, 并且将其转换为整形(比如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. LoRaWAN协议(一)------架构解析

    摘自:http://www.cnblogs.com/answerinthewind/p/6200497.html LoRaWAN协议(一)-----架构解析 (1)LoRaWAN分层 LoRaWAN总 ...

  2. 「CF55D」Beautiful numbers

    传送门 Luogu 解题思路 毒瘤数位DP,发现一个前缀我们只需要记录它对 \(\operatorname{lcm}(1,2,3,\cdots,9)=2520\) 取模的值即可,所以我们在 DP 时记 ...

  3. php 实现店铺装修7

    type_id=0的情况 type_id=1的情况                         type_id=2的情况 /** * @title 店铺装修--商品分类 * @param type ...

  4. php面向对象的三大特性——封装、继承、多态

    1.封装 目的:为了使类更加安全,类里面的成员变量对外界隐藏 做法: 1)将成员变量变成私有的: 2)在类中做方法间接访问成员变量: 3)在方法里面加控制条件. 例: class ren{ priva ...

  5. Mac如何升级自带的vim

    brew install vim --with-lua --with-override-system-vi brew install macvim --with-lua --with-override ...

  6. 【Luogu2496】【BZOJ3005】[SDOI2012]体育课

    把自己去年在luogu写的一个题解搬过来 原题解链接 1. 题目大意 给定一个长度为 \(n\) 的数列 \(a_1,a_2,a_3,...,a_n\) , 并给出 \(m\) 个操作,操作类型如下: ...

  7. 使用FFmpeg处理视频文件:视频转码、剪切、合并、播放速调整

    安装 略. 转码 最简单命令如下: ffmpeg -i out.ogv -vcodec h264 out.mp4ffmpeg -i out.ogv -vcodec mpeg4 out.mp4ffmpe ...

  8. 初学微信小程序——配置问题(1)

    一.注册: 微信小程序账号注册:登录https://mp.weixin.qq.com  点击“立即注册”->”小程序” 注册完成后,下载微信小程序开发者工具: 依次点击:“首页”->“文档 ...

  9. 机器阅读理解(看各类QA模型与花式Attention)(转载)

    目录 简介 经典模型概述 Model 1: Attentive Reader and Impatient Reader Attentive Reader Impatient Reader Model ...

  10. poj 2576 Tug of War

    还是神奇的随机算法,,(看视频说这是爬山法??) 其实就是把序列随机分成两半(我太弱,只知道random_shuffle),然后再每个序列里rand一个位置,x,y然后比较是不是交换之后是更优的. 然 ...