场景:

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. mysql数据表自动导为python sqlalchemy可操作对象

      1.pip install sqlacodegen pip install pymysql 在/usr/lib/python/site-packages/sqlacodegen/main.py中添 ...

  2. 并发工具类(四)线程间的交换数据 Exchanger

    前言   JDK中为了处理线程之间的同步问题,除了提供锁机制之外,还提供了几个非常有用的并发工具类:CountDownLatch.CyclicBarrier.Semphore.Exchanger.Ph ...

  3. 生存分析与R

    生存分析与R 2018年05月19日 19:55:06 走在码农路上的医学狗 阅读数:4399更多 个人分类: R语言   版权声明:本文为博主原创文章,未经博主允许不得转载. https://blo ...

  4. Python正则总结

    re总结 限定符(就是控制重复次数) ? 匹配前面的子表达式零次或一次.例如,"do(es)?" 可以匹配 "do" . "does" 中的 ...

  5. 8. 启动Tomcat闪退无法启动原因解决

    原因可能是由于下面问题导致的: 1.Tomcat环境在不同电脑上引用的jdk路径不同 比如:在A电脑上Tomcat引用的jdk路径为:C:\Java\jdk1.6.0_10 而在B电脑上jdk的安装路 ...

  6. Node + H5 + WebSocket + Koa2 实现简单的多人聊天

    服务器代码  ( 依赖于 koa2,  koa-websocket ) /* 实例化外部依赖 */ let Koa = require("koa2"); let WebSocket ...

  7. ios localization

    1. 在工程文件中选择支持的语言,“Localizations” 2. 添加资源文件 Localizable.strings, (app默认从该资源文件读取字符串) 3. 通过 NSLocalized ...

  8. 一行转多行 及多行转一行的 hive语句

      注意 :|,: 是特殊符号,要用 "\\|", "\\;"来表示.   一行转多行 usertags 里面有很多项,每项之间以逗号分隔   create t ...

  9. MySQL中实现Oracle里面 rank()over ( PARTITION BY ORDER BY) 分类分组功能

    各班级学生成绩测试表 select * from TMP_A; 实现目的: 按照班级分类后按照分数倒序排序 采用MySQL变量简单实现,SQL如下: SELECT  a.stu_id,a.point, ...

  10. python集合的交,差,并,补集合运算汇总

    集合操作实际用的不多,了解即可. 交集:          ( & 或者 intersection ) 并集:    ( | 或者 union ) 差集:   ( -  或者  differe ...