场景:

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. C++ 无锁队列实现

    上源码 #ifndef __GLOBAL_LOCK_FREE_QUEUE_H__ #define __GLOBAL_LOCK_FREE_QUEUE_H__ #include <atomic> ...

  2. 在docker中运行jenkins实现代码自动发布到测试服务器

    在docker中运行jenkins 用的镜像是apline版:lts-alpine,并设置正确的时区. docker run --name jenkins_master -d \ -p 8081:80 ...

  3. css sprite实例

    css sprite直译过来就是CSS精灵.通常被解释为“CSS图像拼合”或“CSS贴图定位”.本文章向码农们介绍css sprite使用方法和基本使用实例,需要的码农可以参考一下. 一.什么是css ...

  4. Python生态圈

    WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framewor ...

  5. 服务器对cookie信息加密

    通过redis的seesion对cookie信息加密  --- 防止cookie记录的用户信息泄露 import tornado.ioloop import tornado.web from data ...

  6. phpmyadmin快速安装

    phpMyAdmin 就是一种 MySQL 数据库的管理工具,安装该工具后,即可以通过 web 形式直接管理 MySQL 数据,而不需要通过执行系统命令来管理,非常适合对数据库操作命令不熟悉的数据库管 ...

  7. linux运维工程师工作中的一些常见问题解决方法

    http://blog.sina.com.cn/s/blog_b9fe247a0101anoe.html 1.shell脚本死活不执行 问题:某天研发某同事找我说帮他看看他写的shell脚本,死活不执 ...

  8. apache中 MaxClients 与MaxRequestsPerChild

    据现象来对APACHE调优,以前用MAXCLIENTS 3000,砖家建议后,改为1500,今天查资料如下: http://www.linuxqq.net/ MaxClients 要加到多少?连接数理 ...

  9. Java工具类实现校验公民身份证的有效性

    转自:https://www.oschina.net/code/snippet_1859292_39120 1 package com.tg.user.controller; import java. ...

  10. 使用spring注解——定义bean和自动注入

    对于java bean的定义和依赖配置,使用xml文件真心是不方便. 今天学习如何用注解,解决bean的定义和注入. 常用注解: 1.自动注入:@Resources,@Autowired 2.Bean ...