专栏首页代码编写世界C++常用的string字符串截断函数

C++常用的string字符串截断函数

C++中经常会用到标准库函数库(STL)的string字符串类,跟其他语言的字符串类相比有所缺陷。这里就分享下我经常用到的两个字符串截断函数:

#include <iostream>
#include <vector>
#include <string>
#include <sstream>

using namespace std;

//根据字符切分string,兼容最前最后存在字符
void CutString(string line, vector<string> &subline, char a)
{
	//首字母为a,剔除首字母
	if (line.size() < 1)
	{
		return;
	}
	if (line[0] == a)
	{
		line.erase(0, 1);
	}

	size_t pos = 0;
	while (pos < line.length())
	{
		size_t curpos = pos;
		pos = line.find(a, curpos);
		if (pos == string::npos)
		{
			pos = line.length();
		}
		subline.push_back(line.substr(curpos, pos - curpos));
		pos++;
	}

	return;
}

//根据空截断字符串
void ChopStringLineEx(string line, vector<string> &substring)
{
	stringstream linestream(line);
	string sub;

	while (linestream >> sub)
	{
		substring.push_back(sub);
	}
}

int main()
{
	string line = ",abc,def,ghi,jkl,mno,";
	vector<string> subline;
	char a = ',';
	CutString(line, subline, a);
	cout << subline.size()<<endl;
	for (auto it : subline)
	{
		cout << it << endl;
	}

	cout << "-----------------------------" << endl;

	line = "   abc   def   ghi  jkl  mno ";
	subline.clear();	
	ChopStringLineEx(line, subline);
	cout << subline.size() << endl;
	for (auto it : subline)
	{
		cout << it << endl;
	}


    return 0;
}

函数CutString根据选定的字符切分string,兼容最前最后存在字符;函数ChopStringLineEx根据空截断字符串。这两个函数在很多时候都是很实用的,例如在读取文本的时候,通过getline按行读取,再用这两个函数分解成想要的子串。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • VC遍历访问目录下的文件

    访问目录文件夹下的文件是经常需要的操作,C/C++和win32接口都没有提供直接调用的函数。在这里总结了几个经常用到的函数,通过MFC的CFileFind函数递...

    charlee44
  • 关于GDAL读写Shp乱码的问题总结

    最近在使用GDAL读写Shp格式中的属性字段的时候也遇到了中文乱码的问题,总结下自己遇到的情况。

    charlee44
  • WebGL简易教程(一):第一个简单示例

    不得不说现在三维图形渲染技术更新换代实在是太快,OpenGL很多资料还没来得及学习就已经有点落伍了。NeHe的学习教程还有之前用的《OpenGL编程指南》第七版...

    charlee44
  • [773]smtplib.SMTPServerDisconnected: Connection unexpectedly closed

    在smtp.login(username,password)前面添加两行代码,即可实现邮件成功发送。添加的代码如下:

    周小董
  • 《中国移动NB-IoT安全白皮书》中建议采用TEE!

    2017中国移动全球合作伙伴大会上,中国移动在物联网分论坛期间正式发布了NB-IoT安全白皮书,提出了NB-IoT安全技术需求和安全架构以及五方面推进NB-Io...

    安智客
  • 数组乘积--满足result[i] = input数组中除了input[i]之外所有数的乘积(假设不会溢出

    数组乘积(15分) 输入:一个长度为n的整数数组input 输出:一个长度为n的整数数组result,满足result[i] = input数组中除了inp...

    猿人谷
  • Asp.net web api 知多少

    本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想...

    圣杰
  • 「小程序JAVA实战」小程序视频展示页开发(52)

    PS:如果我们把cover-view中的cover去掉的话,我们这个view肯定是无法保存在我们的视频里面的。下面的我们来一起实现里面的功能。

    IT故事会
  • C++踩坑记录(一)std:;string的析构

    越学C++越觉得自己菜了 之前写服务端程序有一个往消息队列里面推json的过程,然后发现推进去C#端取到的无论如何都是个空指针 简单复现一下现场

    Pulsar-V
  • 一种绝对提高开发水平的方法

    如果做了多年开发的你发现自己的水平一直上不去,你可能要提高自己的英文水平了,英语就是你技术的瓶颈,对有些人可能是硬伤。

    张果

扫码关注云+社区

领取腾讯云代金券