当前位置: 首页 > article >正文

C++: Articles:Split a String

切割字符串

  • short article
  • 1
  • 2: 修改方案
    • 2.1 完整的代码

short article

  • 在这篇短文中,我想分享一段关拆分字符串的短代码。
  • 有一个名为explode()的函数可以通过给定的分隔符(单个字符或子字符串)来分割字符串。
  • 例如,给定字符串str=“快速棕色狐狸”将被“”(空格字符)分割。简单地说,我们只需调用explore(str,“”),函数就会返回字符串数组{“the”、“quick”、“brown”、“fox”}。

Foollowing is the definition of explode(using C++ 11)

#include <iostream>  
#include <algorithm>  
#include <vector>  
using namespace std;  
  
  
const vector<string> explode(const string& str, const char& c)
{
	
	string buff{""};
	vector<string> v;
	for(auto n:str)
	{
		if(n != c) buff +=n;
		else {
			if(n ==c && buff != "")
			{
			    v.push_back(buff);
			    buff = "";
            }
        }
    }
    if(buff != "")  v.push_back(buff);
}

int main(){
	string str{"the quick brown fox jumps over the lazy dog"};
    // error : nvalid conversion from 'const char*' to 'char'
	vector<string> vec {explode(str," ")};
	// for(auto n :vec) std::cout << n <<std:: endl;
	return 0;
}

💚💚💚
上面的代码编译器会报如下错误
error : nvalid conversion from 'const char’ to ‘char’*
下面我分析下:编译器报上述错误的原因

1

2: 修改方案

我们可以将函数 explode的第二个 argument参数修改为 指针 。
即函数原型
const vector explode(const string& str, const char c*){}

2.1 完整的代码

#include <iostream>  
#include <algorithm>  
#include <vector>  
using namespace std;  
  
  
const vector<string> explode(const string& str, const char* c)
{
	
	string buff{""};
	vector<string> v;
	for(auto n:str)
	{
		if(n !=*c) buff +=n;
		else {
			if(n ==*c && buff != "")
			{
			    v.push_back(buff);
			    buff = "";
            }
        }
    }
    if(buff != "")  v.push_back(buff);
	return v;
}

int main(){
	string str{"the quick brown fox jumps over the lazy dog"};
    vector<string> v = explode(str," ");
	vector<string> vec {v};
	for(auto n :vec) std::cout << n <<std:: endl;
	return 0;
}

输出:
  the
quick
brown
fox
jumps
over
the
lazy
dog

http://www.kler.cn/a/7014.html

相关文章:

  • Springboot 整合 Java DL4J 打造金融风险评估系统
  • 《Django 5 By Example》阅读笔记:p645-p650
  • 性能超越Spark 13.3 倍,比某MPP整体快数十秒 | 多项性能指标数倍于主流开源引擎 | 云器科技发布性能测试报告
  • C/C++基础知识复习(23)
  • MongoDB在现代Web开发中的应用
  • SpringBoot实现WebSocket
  • OpenResty+OpenWAF的WEB防护实战
  • Java程序设计——作业2循环
  • C++算法恢复训练之时间复杂度
  • 温度PID串级控制器在提高空气膜分离制氮产量中的应用
  • Vue3之插槽(Slot)
  • SpringBoot起步
  • 改进YOLO系列:YOLOv5s、YOLOv5m结合GHostv2轻量化设计,保持精度,计算量缩小40%
  • 记录--Canvas实现打飞字游戏
  • Python模拟星空
  • 逍遥自在学C语言 | 第一个C语言程序 九层之台起于垒土
  • 多线程进阶学习12------ConcurrentHashMap详解
  • 关于数据结构及存储的想法
  • 出售Steam上线游戏的完整开发资源包
  • 企业月结快递管理教程
  • aspnet016计算机组成原理精品课程shfw程序
  • 每天一道大厂SQL题【Day19】华泰证券真题实战(一)
  • 怎么压缩pdf文件的大小,并保持清晰度的3种办法
  • 462. 最小操作次数使数组元素相等 II——【Leetcode每日一题】
  • 海睿思分享 | 浅谈数仓指标体系管理
  • 深度学习训练营之yolov5训练自己的数据集