在项目开发中,经常使用到字符串分割, 并且将其转换为整形(比如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. Codeforces 1296E2. String Coloring (hard version)

    这道题和HDU1257一模一样,一开始窝都用贪心直接解,没法理解为什么求一个最长下降序列,直到看了巨巨的题解,先给出一个定理,Dilworth's theorem,离散学不好,补题两行泪,该定理是说, ...

  2. Redis列表类型

    列表类型(list) 可以存储一个有序的字符串列表.常用的操作是向列表两端添加元素. 一个列表类型键最多能容纳2^32 -1个元素. 命令 向列表两端增加元素 LPUSH key value [val ...

  3. array_multisort 对关联数组进行排序的问题 PHP

    我们在php的数组操作中经常用到对数组进行排序的问题,这里说的是对关联数组进行排序需要用到函数 array_multisort . array_multisort(array_column($arr, ...

  4. swoole之异步文件IO

    一.代码部分 读: <?php /** * 异步文件系统仅限于4.3.0之前的版本 * 读取文件 */ $filename = dirname(__FILE__).DIRECTORY_SEPAR ...

  5. Luogu神贴合辑

    1.扩散性百万甜面包 - 陈乙己 2.Unknown_Error - 说句闲话:研究珂学的最好方法是

  6. Day6 - K - 陌上花开 HYSBZ - 3262

    有n朵花,每朵花有三个属性:花形(s).颜色(c).气味(m),用三个整数表示. 现在要对每朵花评级,一朵花的级别是它拥有的美丽能超过的花的数量. 定义一朵花A比另一朵花B要美丽,当且仅Sa>= ...

  7. mysql使用的坑

    一: mysql默认是安装记录的物理顺序取数据的,如果不加order by 排序,可能得不到预期的结果. (1) 获取 两个时间点的 id  (很快) $sql = ‘select id from a ...

  8. Linq----------if使用

    static void Main(string[] args) { "; "; var processid = "c8b79051249940acbeca5dd951d2 ...

  9. springboot - 在servlet中映射Errors 脱离spring mvc

    应用不用Spring MVC, 采用ErrorPageRegistrar 接口能直接映射errors. 1.概览 2.java代码 1).MyAppServlet package com.ebc.se ...

  10. 我编写的EEPROM 上位机软件

    进入模式: 上位机发送 消息 上位机EEPROM 按下进入模式 消息的ID号是:0x08111111 数据是: 00 01 ff 00 00 00 00 00 上位机显示 运行状态 :为进入模式 当我 ...