【C++】实现JAVA中的split方法

用C++实现split分割字符串 前几天做到一个牛客NC113-验证IP地址的题目,用python和Java都可以轻松的调用库函数来实现字符串的分割,分别验证每一个token是否合法。奈何C++标准库中没有这个函数,那就自己来实现一下。 首先,回忆一下C++带有空格的输入流的读取,用getline来实现,getline默认遇到回车\n而非空格而结束读取。 ①getline用法如下(引自cplusplus.com) (1) istream& getline (istream& is, string& str, char 阅读详情

JAVA中的split函数可谓相当好用,可惜我没在C++中找到类似方法...于是乎我在网上找到了两种自己实现的函数,简单介绍下,之后进行简单比较讨论:

常规方法:

vector<string> split(string str){  
    int start=0, end=0, size=str.size();  
    vector<string> result;  
    for (end=0; end<size; ++end) {  
        if (str[end]==' ') {  
            if (end>start) { // Avoid the multi-' ' situation  
                string newStr=str.substr(start,end-start);  
                result.push_back(newStr);  
            }  
            start=end+1;  
        }  
    }  
    if (end>start) {  
        string newStr=str.substr(start,end-start);  
        result.push_back(newStr);  
    }  
    return result;  
}  

利用stringstream的非常规方法:

vector<string> split(string str){  
    stringstream ss;  
    ss<<str;  
    string words;  
    vector<string> result;  
    while (ss>>words) {  
        result.push_back(words);  
    }  
    return result;  
}  

比较:第一种方法将 str[end]=' ' 中的空格替换成其他字符也可行,比价灵活;而第二种方法利用了stringstream自动识别丢弃空格的特性进行分裂,劣势很显然,只能分割以空格作为中间字符的字符串。可以根据具体情况灵活选用。

关于stringstream的方法参考链接:https://blog.youkuaiyun.com/sophia1224/article/details/53054698

java实现字符串分割split函数(附完整源码) 阅读详情

相关推荐

告别理论劝退:用动画和Tanner图轻松理解QC-LDPC的译码原理(BP算法详解)

本文通过动画和Tanner图直观解析QC-LDPC码的BP译码原理,帮助读者轻松理解802.11ac协议中的编译码过程。文章详细展示了QC-LDPC的结构之美、BP算法的动态信息流动以及LLR的视觉化解读,并对比了硬判决算法的性能差异,为开发者和研究者提供了实用的可视化工具开发建议。

weixin_30411239的博客 493

c++11模拟java中的split函数——字符串分割

#include <iostream> #include <vector> #include <string> using namespace std; vector<string> split(const string& s,const string& c){ vector<string> v; string::...

android葱的博客 403

Widar3.0复现日志(DFSExtractionCode)

需要使用的matlab基本功能

XiaoQiXiaoWei_J的博客 2437

用C/C++实现Java中的split函数分割字符串

1.先给出程序 #include #include #include using namespace std; void split(const string& src,const string& sep,vector& ans) { string str=src; string substr; string::size_type start=0,index; ans.clea

MyLinChi的博客 1158

audio框架学习-Audio_Flinger分析

文章目录一、代码位置二、audio服务启动2.1 main服务2.2 audioflinger添加到系统服务中2.3 audioflinger的对外接口 之前记录过audioTrack的笔记,这次继续参考audioFlinger相关的代码并做笔记; 参考文档:https://www.cnblogs.com/innost/archive/2011/01/15/1936425.html和https://blog.youkuaiyun.com/zyuanyun/article/details/60890534?spm=100

永不秃头的程序员的博客 2135

python特征选择pso_【来点干货】机器学习中常用的特征选择方法及非常详细的Python实例...

花费了很长时间整理编辑,转载请联系作者授权,违者必究。特征选择(Feature selection)是在构建预测模型的过程中减少输入变量的一个过程。它是机器学习中非常重要的一步并在很大程度上可以提高模型预测精度。这里我总结了一些机器学习中常见的比较有用的特征选择方法并附上相关python实现code。希望可以给大家一些启发。首先,我们为什么要进行特征选择呢?它有以下几个优点:减少过拟合:冗余数据常...

weixin_39927158的博客 1164

C++实现Java的split()函数

众所周知,java对于string的split函数非常好用, 但是C++标准库函数中并没有对于此函数的用法,以下是三种手动实现split()的方法: 共有三种方法: 1. 第一种 (废话), 最快的一种方法,不额外遍历string来产生一个函数, 直接边遍历,边分割,边做题。 2. 第二种 愚笨的手写方法: vector split(string str){ in

ChenLI's blog 1417

电路板功能测试系统-FCT for PCBA

电路板功能测试系统用于电路板组件(PCBA)的功能测试(FCT),满足自动化大批量生产的要求。  ● 用户根据自己需要定义测试步骤,灵活方便  ● 适合工业自动化大批量生产应用  ● 系统测试精度高,稳定可靠   一、电路板功能测试系统概述 电路板测试过程通常由多个步骤组成,每单个步骤中需要对多个物理量(电压、电流、电阻、频率、波形等)进行测试。在每个步骤测试时

6813

Java split方法详细讲解

分隔符可以是任意字符、符号、数字、字符串等。

qq_26893841的博客 4万+

Linkage Mapper 工具参数详解——Building Network and Map Linkages

此文档用于解析使用LinkageMapper各输入输出参数详情以及可能的影响,并介绍了如何解释模型输出结果和输出参数,适合刚入手的人。篇幅很长很啰嗦,是因为每个参数都解释的万分细致。

sumuses的博客 6119

python实现序列比对之Needleman-wunsch算法 (附完整源码)

python实现序列比对之Needleman-wunsch算法 (附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 461

C++ split 函数

用惯了java的split 函数,再来写C++的时候,发现C++居然没有split函数,真心忧桑。整了一个样例,当做自己的库函数,以后用的时候,直接copy。void split(const string & str, const string &delim, vector<std::string> &result) { size_t pos2 = 0; size_t pos1 =

jxhaha的博客 843

【深度学习新浪潮】算力行业的核心技术有哪些?

算力行业核心技术是芯片+互联+存储+调度+能效+软件的全栈协同:芯片提供算力、互联打通集群、存储保障数据、调度提升效率、能效支撑规模、软件释放算力。当前AI大模型推动算力从“单机”走向“万卡级超节点集群”,技术竞争从单一芯片升级为系统级、全栈化的综合能力。

专注:太空算力、AI infra、异构调度、大模型成本工程 339

c++ split()实现

在c++中,没有java与python中定义的split()功能的函数,于是自己实现之。 情况1,适用范围,分隔符为字符。思路,记录分隔符的位置,判断需要截取的字符串的下标范围。 vector<string> split(string s,char ch){ int start=0; int len=0; vector<string> ...

weixin_30901729的博客 1090

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

c++中实现将字符串按模式分段

java中String中有个split函数,可以将字符串按照给定的模式分段,返回一个字符串数组,c++标准库中没有这样的函数,于是动手利用string中的find和substr函数实现这样一个功能,直接贴代码: #include #include #include #include #include using namespace std; void print(string str

world_hope的专栏 1920

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

字符串的切割操作(strtok,split)

一:strtok C/C++:char *strtok(char s[], const char *delim); s 代表须要切割的字符串,delim代表切割的标志,參数都为比选!返回指向切割部分的指针,假设没有切割成功就返回NULL. 一个简单的样例: void main() { char *str = "jscese test strtok"; char *d...

weixin_34354173的博客 293

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

jobjectArray 数组取出jstring对象并打印

java中的String.split("#")在jni层实现 jstring decodeCustom(JNIEnv *env, jobject type, jstring keys, jint offset) { jclass string_class = env->FindClass("java/lang/String"); jmethodID methodId = env->GetMethodID(string_class,

poxu1234的博客 2115

第几天?【HDOJ2005 】

这道题要是用c特别好做,但是用java还要知道split才能做出来,也是坑的一匹!**import java.util.Scanner; public class hdu2005 { public static void main(String[] args) { Scanner in=new Scanner(System.in); int a,b,c,sum

姚军 1242

华为中级【单词倒序】

//方法一:数学方法判断 #include using namespace std; bool isChar(char c) { if((c='a')||(c='A')) return true; return false; } int main() { string a; vectorv; getline(cin,a); stri

u012067392的专栏 350

剑指 Offer 05.替换空格

剑指 Offer 05.替换空格 题目描述 请实现一个函数,把字符串s中的每个空格替换成%20。 示例1 输入:s = “We are happy.” 输出:“We%20are%20happy.” 限制 0 <= s的长度 <= 10000 提示 需要知道有多少个空格 从尾到头来修改字符串更为方便 代码演示 Java/Python3 Offer消失法 public class Interview05 { public static void main(String[] args

m0_46334316的博客 802

C++:实现split模板(附带源码)

C++:实现split模板(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 872

C++ 实现split函数

JAVA ,Python等语言中都自带split方法,能够将长字符串根据某一字符分割为短字符串,但C++中没有提供该功能,有时使用比较不方便。对此,查找了相应资料,将实现代码记录如下: void supersplit(const std::string& s, std::vector<std::string>& v, const std::string& c) { std::string::size_type pos1, pos2; size_t len = s.

flyconley的博客 4726

MFC实现C#,java中的Split方法

MFC中对CString类型的操作并没有Java和C#中封装的类似Split方法,此方法是用于实现按指定符号分隔字符串保存到数组中,例如: string str = "a,b,c,d,e,f" 那么经过调用Split(',')后就返回一个数组string[],分别保存着a, b, c, d, e, f 然后循环遍历数组就可以取到没一项了。下面是MFC实现这一功能的代码: //实现C#的Strin

dangercheng的专栏 2287

C++实现类似Java中split()功能

C++实现类似Java中split()功能 #include <bits/stdc++.h> using namespace std; vector<string>split(string str, char c) { vector<string>res; string t; str += c; for (int i = 0; i < str.size(); i++) { if (str[i] == c)res.push_back(t), t = ""

qq_52765554的博客 1126

cpp教程8-编程实战-以自实现split为例讲解C++中的字符串操作

以自实现split为例讲解C++中的字符串操作 C++字符串的操作是不太方便的, 我们来讲一下其基本操作,并实现一个自己的split函数 字符串与数字的互相转换 数字转string string并没有提供构造方法来直接数字转换成字符串, 比如 string(int), string(double) 之类的. 头文件:string.h std::to_string(int) std::to_string(long) std::to_string(long long) std::to_string(float)

搜索引擎预备工程师 602

C++:实现字符串分割split函数(附带源码)

C++:实现字符串分割split函数(附带源码)

欢迎来到我的博客!这里是一个专注于计算机技术的分享平台,涵盖编程开发、算法研究、系统架构、软件工程等多个领域。无论你是初学者还是资深开发者,都能在这里找到有价值的内容。 2386
上一篇: Second Highest Salary
下一篇: 【C++】Visual定位内存泄漏方法
Sim0Hayha
博客等级 码龄10年 9粉丝 55原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值