场景:

1.在存储数据时有时接口需要合并字符串值,并以某些特殊字符来合并部分,到需要的时候再分割它。如一些数值,人名等。

2.C++有strtok,stringstream和find函数来实现分割。可以根据情况调用。

#include <stdlib.h>
#include <string.h>
#include
#include <iostream>
#include <sstream>
#include <vector>
using namespace std; void TestStrtok()
{
//1.非线程安全的,如果多个线程同时调用,会覆盖掉原来的值.
//2.支持以字符串分割.
//3.源字符串必须是可修改的.
char c_str[]="google||twitter||facebook||microsoft||apple||ibm||";
const char* delim = "||";
char* result = strtok(c_str,delim);
while(result != NULL)
{
cout << result << endl;
result = strtok(NULL,delim);
}
} void TestGetLineWithStringStream()
{
//1.线程安全的,但是只能以字符作为分隔符
stringstream ss("google|twitter|facebook|microsoft|apple|ibm|");
string str;
while(getline(ss,str,'|'))
{
cout << str << endl;
}
} void TestStringFind()
{
//1.自己实现,线程安全,支持字符串作为分隔符.缺点可能就是代码量多.
string str = "google||twitter||facebook||microsoft||apple||ibm||";
const char* delim = "||";
const int len = strlen(delim);
size_t index = ;
size_t pos = str.find(delim,index);
while(pos != string::npos)
{
string ss = str.substr(index,pos-index);
cout << ss << endl;
index = pos+len;
pos = str.find(delim,index);
} //cout << "is last?" << " index:" << index << " str.length():" << str.length() << endl;
if((index+) < str.length())
{
string ss = str.substr(index,str.length() - index);
cout << ss << endl;
}
} int main(int argc, char const *argv[])
{
cout << "TestStrtok: " << endl;
TestStrtok();
cout << "TestGetLineWithStringStream: " << endl;
TestGetLineWithStringStream();
cout << "TestStringFind: " << endl;
TestStringFind(); return ;
}

输出:

TestStrtok:
google
twitter
facebook
microsoft
apple
ibm
TestGetLineWithStringStream:
google
twitter
facebook
microsoft
apple
ibm
TestStringFind:
google
twitter
facebook
microsoft
apple
ibm
[Finished in 0.2s]
 
char* a[3];
char* buf ="这是第一行\n这是第二行\n这是第三行\n"; 我想要用'\n'符将buf分割成三段并分别存入a[1],a[2],a[3]中,
请问该怎么做~
#include <stdio.h>
#include <string.h>
#include <malloc.h> int main()
{
char *a[];
char *buf ="这是第一行\n这是第二行\n这是第三行\n";
char *t, *pre = buf;
int i = , l; while (t = strchr(pre, '\n'))
{
if (i >= )
break; l = t - pre;
a[i] = (char *)malloc(l + );
strncpy(a[i], pre, l);
a[i][l] = '\0';
++i;
pre = t + ;
} for (i = ; i < ; ++i)
{
printf("%s\n", a[i]);
free(a[i]);
} return ;
}

VC字符串处理整理的更多相关文章

  1. vc字符串转换处理:(绝对精华,收集所有的例子)

    vc字符串转换处理:(绝对精华,收集所有的例子) 1.头文件中要定义宏;   #define   UNICODE         #define   _UNICODE     //////////// ...

  2. Lua字符串库(整理)

    Lua字符串库小集 1. 基础字符串函数:    字符串库中有一些函数非常简单,如:    1). string.len(s) 返回字符串s的长度:    2). string.rep(s,n) 返回 ...

  3. Char型和string型字符串比较整理

    1.赋值 char赋值: char ch1[] = "give me"; char ch2[] = "a cup"; strcpy(ch1,ch2); cout ...

  4. vim 字符串替换整理

    公司项目测试,要在vi编辑其中进行多路径修改,这时候用到了字符串替换的知识,在这里我自己整理了一下. 一.基本内容替换,无特殊符号 :s/old/new/  替换当前行第一个 old 为 new   ...

  5. C和C++字符串处理整理

    在刷leetcode题目的过程中,发现自己对于c和c++字符串的处理并不是很拿手,处理起来比较费劲,而且,算法题似乎很中意字符串的处理,有很多题目都涉及到它.字符串处理比较基础,但是很重要,因此,整理 ...

  6. C/C++字符串使用整理

    在C语言中,字符串有多种操作与处理方法.话不多说,下面就整理一下C语言中字符串的使用整理. 1.头文件 字符串的头文件: #include<cstring> 2.输入 通常,字符串有多种输 ...

  7. VC字符串转换常用函数

    最近在做一些关于VC的ActiveX小插件,经常会遇到字符串处理的问题,狂查CSDN和MSDN,结果并不理想.先说明一下,相关处理函数在VC++6.00测试通过.也许很多人不能理解,现在都什么年代了, ...

  8. VC++字符串的使用及转换

    CString ,BSTR ,LPCTSTR之间关系和区别 CString是一个动态TCHAR数组,BSTR是一种专有格式的字符串(需要用系统提供的函数来操纵,LPCTSTR只是一个常量的TCHAR指 ...

  9. VC++ 字符串操作学习总结

    vc++中各种字符串(转载) http://www.cnblogs.com/tomin/archive/2008/12/28/1364097.html CString ,BSTR ,LPCTSTR之间 ...

随机推荐

  1. KVM虚拟机网络闪断分析

    https://www.cnblogs.com/Bozh/p/5484838.html 背景 公司云平台的机器时常会发生网络闪断,通常在10s-100s之间. 异常情况 VM出现问题时,表现出来的情况 ...

  2. Linux系统下MongoDB的简单安装与基本操作

    这篇文章主要介绍了Linux系统下MongoDB的简单安装与基本操作,需要的朋友可以参考下   Mongo DB ,是目前在IT行业非常流行的一种非关系型数据库(NoSql),其灵活的数据存储方式,备 ...

  3. 13.从url 输入网址到最终页面渲染完成

    从url 输入网址到最终页面渲染完成,发生了什么? 1.DNS解析:将域名地址解析为IP地址 先读取: -浏览器DNS缓存 -系统DNS缓存 -路由器DNS缓存 -网络运营商DNS缓存 -递归搜索:b ...

  4. 配置WDS支持使用UEFI模式启动

    使用WDS通过Legacy+MBR方式部署操作系统不难,网上文章也有很多,本文就不赘述了,主要记录一下通过UEFI+GPT方式部署. 网上文章虽然也有介绍通过UEFI+GPT方式部署,但大多数说的比较 ...

  5. Ubuntu jdk 8 与 6 切换 (安装与配置)

    Switch To Oracle JDK8 Switch To Oracle JDK8 1.1 Switch Oracle JDK in the Unbuntu 14.04 Step1 : Downl ...

  6. Astah professional 7.2

    分享Astah professional 7.2下载和破解: 官方下载地址:http://astah.net/download 1.免费的community版本 链接:http://pan.baidu ...

  7. event 实现两个程序的交互

    event.wait() 等待一定时间,或者当遇到event.set() 时,继续执行 event.clear() 清除信号 event.set() 设置信号 event.isset() 判断信号 例 ...

  8. OpenSL ES 查询设备支持的SL Profiles

    opensl es 提供了三种类型:分别是 SL_PROFILES_PHONE(手机):SL_PROFILES_MUSIC(音乐); SL_PROFILES_GAME (游戏). 如果你使用的手机的开 ...

  9. UNION会自动删除重复项,union与union all的差异

    UNION会自动删除重复项,刷选出部分字段的时候要注意了,如果刷选出来的两个字段的值完全相同就会剩下一个. UNION ALL 和 UNION 不同之处在于 UNION ALL 会将左右两个查询的结果 ...

  10. sqlserver table partion

    SQL SERVER 表分区实施步奏   1. 概要说明 SQL SERVER的表分区功能是为了将一个大表(表中含有非常多条数据)的数据根据某条件(仅限该表的主键)拆分成多个文件存放,以提高查询数据时 ...