精华内容
下载资源
问答
  • C++ string字符串分割函数 单个分割字符 #include <iostreeam> #include <string> #include <vector> using namespace std; vector<string> Split(const string &str, const string &...

    C++ string字符串分割函数

    单个分割字符

    #include <iostreeam>
    #include <string>
    #include <vector>
    using namespace std;
    
    vector<string> Split(const string &str, const string &deln)
    {
    	vector<string> strvec;
    	string::size_type pos1, pos2;
    	string c_str = str + deln;
    	pos2 = c_str.find(deln);
    	pos1 = 0;
    	while(pos2 != string::npos)
    	{
    		string c_sing = c_str.substr(pos1, pos2 - pos1);
    		if(c_sing.size() != 0)
    			strvec.pushback(c_sing);
    		pos1 = pos2 + deln.size();
    		pos2 = c_str.find(deln, pos1);
    	}
    
    	return strvec;
    }
    

    C语言 strtok函数分割字符串(单/多字符)

    #include <iostream>
    #include <stdio.h>
    #include <string>
    #include <vector>
    
    using namespace std;
    
    vector<string> Split(char chr[], char *deln)
    {
    	vector<string> chevec;
    	char *p;
    	p = strtok(chr, deln);
    	while(p)
    	{
    		chevec.pushback(p);
    		p = strtok(Null, deln);
    	}
    
    	return chevec;
    }
    
    展开全文
  • 标准std::string分割字符串split

    万次阅读 2015-01-30 15:44:49
    在C#中分割字符串有现成的函数Split可供调用,但是标准C++好像却没有现成的,还好根据STL地强大功能,可以很方便地自己实现出来,下面就是我写的分割函数: std::vector splitString(std::string srcStr, std::...

    在C#中分割字符串有现成的函数Split可供调用,但是标准C++好像却没有现成的,还好根据STL地强大功能,可以很方便地自己实现出来,下面就是我写的分割函数:

    std::vector<std::string> splitString(std::string srcStr, std::string delimStr,bool repeatedCharIgnored)
    {
        std::vector<std::string> resultStringVector;
        std::replace_if(srcStr.begin(), srcStr.end(), [&](const char& c){if(delimStr.find(c)!=std::string::npos){return true;}else{return false;}}/*pred*/, delimStr.at(0));//将出现的所有分隔符都替换成为一个相同的字符(分隔符字符串的第一个)
        size_t pos=srcStr.find(delimStr.at(0));
        std::string addedString="";
        while (pos!=std::string::npos) {
            addedString=srcStr.substr(0,pos);
            if (!addedString.empty()||!repeatedCharIgnored) {
                resultStringVector.push_back(addedString);
            }
            srcStr.erase(srcStr.begin(), srcStr.begin()+pos+1);
            pos=srcStr.find(delimStr.at(0));
        }
        addedString=srcStr;
        if (!addedString.empty()||!repeatedCharIgnored) {
            resultStringVector.push_back(addedString);
        }
        return resultStringVector;
    }

    其中,srcStr是待分割地字符串,delimStr是分隔符组成的字符串,可以有多个分隔符,最后的repeatedCharIgnored是指是否忽视待分割字符串中的重复分隔符,也就是说如果忽视,那么多个连续分隔符将被视为一个分隔符,这样最后得到的分割结果中是不会出现空字符串的,否则,分割结果中会出现空字符串。

    splitString("what tatoo"," t",true)的返回结果为{"wha","a","oo"}

    而splitString("what tatoo"," t",false)的返回结果为{"wha","","","a","oo"}


    此算法受某位同学启发,特此感谢。

    展开全文
  • c++ string split分割字符串

    千次阅读 2017-12-03 16:19:30
    c++原生好像没有split分割字符串内置函数 #include #include #include #include #include #include #include #include using namespace std; vector split(string &str,string sp){ vector split; //...

    c++原生好像没有split分割字符串内置函数


    #include <iostream>
    #include <string>
    #include <typeinfo>
    #include <tuple>
    #include <map>
    #include <vector>
    #include <thread>
    #include <fstream>
    using namespace std;
    
    vector<string> split(string &str,string sp){
    	vector<string> split;
    	//string sp="age";
    	int ex=0;
    	for(int i=0;i<str.length();i++){
    		//比较最前面两个char字符,不相等直接再一下字符
    		if(str[i]!=sp[0]){
    			continue;
    		}
    		//如果开始两个相等那么再比较分隔字符串中下一个字符
    		//比较时候i是不增加的,用偏移量来,以防没有配匹退不回去
    		//++j是先增加一个直接比较第二个开始,因为前面第一个已经比较了
    		int j=1;
    		for(j=1;j<sp.length();j++){
    
    			if(str[i+j]!=sp[j]){
    			    break;//还没有比较完分隔字符就不同了,所以直接退出这个
    			}
    		}
    
    		if(j==sp.length()){
    
    			split.push_back(str.substr(ex,i-ex));
    			
    			i=i+j;
    			ex=i;
    		}
    
    	}
    	//剩下全部加入去
    	split.push_back(str.substr(ex,-1));
    	return move(split);
    }

    调用

    int main() {
    	ifstream in("json.txt");
    	if(not in){
    		cout<<"json.txt not open!";
    		return -1;
    	}
        string json;
    	getline(in,json);	
    	in.close();
    		vector<string> ss=split(json,",");
    	for(auto & p:ss){
    	cout<<p<<endl;		
    	}
    	return 0;
    }


    还可以加入去头去尾的,这样不会有空串

    vector<string> split(string &str,string sp){
    	vector<string> split;
    	//string sp="age";
    	int ex=0;
    	for(int i=0;i<str.length();i++){
    		//比较最前面两个char字符,不相等直接再一下字符
    		if(str[i]!=sp[0]){
    			continue;
    		}
    		//如果开始两个相等那么再比较分隔字符串中下一个字符
    		//比较时候i是不增加的,用偏移量来,以防没有配匹退不回去
    		//++j是先增加一个直接比较第二个开始,因为前面第一个已经比较了
    		int j=1;
    		for(j=1;j<sp.length();j++){
    			if(str[i+j]!=sp[j]){
    			    break;//还没有比较完分隔字符就不同了,所以直接退出这个
    			}
    		}
    
    		if(j==sp.length()){
    			if(i-ex>1)
    			split.push_back(str.substr(ex,i-ex));
    			ex=i+j;
    			i=i+j-1;
    		}
    
    	}
    	//剩下全部加入去
    	if(ex<str.length())
    	split.push_back(str.substr(ex,-1));
    	return move(split);
    }


    展开全文
  • //参数1:要分割字符串;参数2:作为分隔符的字符;参数3:存放分割后的字符串的vector向量 void Split(const std::string&amp; src, const std::string&amp; separator, std::vector&lt;std::string&...
    //参数1:要分割的字符串;参数2:作为分隔符的字符;参数3:存放分割后的字符串的vector向量
    void Split(const std::string& src, const std::string& separator, std::vector<std::string>& dest) //字符串分割到数组
    {
    	string str = src;
    	string substring;
    	string::size_type start = 0, index;
    	dest.clear();
    	index = str.find_first_of(separator,start);
    	do
    	{
    		if (index != string::npos)
    		{    
    			substring = str.substr(start,index-start );
    			dest.push_back(substring);
    			start =index+separator.size();
    			index = str.find(separator,start);
    			if (start == string::npos) break;
    		}
    	}while(index != string::npos);
    
    	//the last part
    	substring = str.substr(start);
    	dest.push_back(substring);
    }
    

     

    展开全文
  • C++ string字符串分割

    万次阅读 2018-05-27 21:42:04
    假设str为待分割字符串,pattern为分割的标记字符串,如下:vector&lt;string&gt; split(const string&amp; str, const string&amp; pattern) { vector&lt;string&gt; ret; if(pattern...
  • 这段代码在C++中出错,网上查资料发现C++ switch不支持字符串的。网上有解决办法 for (int i = 2; i &lt; strs.size(); ++i) { switch (strs[i]){ case "thumbnail": thumbnailMode = strs[...
  • //分割字符串 void SplitString(const std::string&amp; s, std::vector&lt;std::string&gt;&amp; v, const std::string&amp; c) { std::string::size_type pos1, pos2; pos2 = s.find(c); ...
  • 本文以C++代码的形式,展现了如何分割字符串对象。源码#include #include <string> #include #include using namespace std; void printVec(vector<string> &res) { for (size_t i = 0; i (); i+
  • istringstream 详解 ...getline 解释 头文件: getline()的原型是istream& getline ( istream &is , string &str , char delim );...str表示把从输入流读入的字符串存放在这个字符串中(可
  • C++ 分割字符串-Split

    2016-09-01 21:17:27
    通过stringstream的getline 分割string#include "stdafx.h" #include <string> #include #include using namespace std; vector<string> Split(string str, char de[]) { vector<string> vec = {st
  • #include<...string> usingnamespacestd; std::vector<std::string>splitstring(std::stringconst&src,constchar*delimiter) { autoisdelim=[](charp,constchar*delim){ ...
  • [C++]string分割字符串

    2014-08-22 16:32:48
    std::vector split(std::string str, std::string pattern) { std::string::size_type pos = 0; std::vector result; str += pattern; int size = str.size(); for (int i = 0; i ; i ++)
  • c++ split分割字符串为vector

    千次阅读 2018-04-25 11:39:08
    2.复制本地文件可调用的函数代码/*aim:便于以后可以根据分割符扩展压缩文件数量author:wshtime:20180403input: string strTime:需要分割字符串output: vector&lt;WCHAR*&gt;:分割后保存的vector容...
  • 字符串绑定到输入流istringstream,然后使用getline的第三个参数,自定义使用什么符号进行分割就可以了。 #include <iostream> #include <sstream> #include <string> #include <...
  • C++ split 分割字符串

    千次阅读 2016-07-12 11:34:38
    第一种方法:不使用split函数: main.cpp#include #include #include <string> #include #include #include <stdlib.h>#define OUT (std::cout) #define END (std::endl) std::vector<st
  • C++string字符串分割实现

    千次阅读 2020-03-13 18:23:38
    C++标准库里面没有提供的...C++string字符串分割实现: #include <vector> #include <string> #include <iostream> using namespace std; std::vector<std::string> split(const std::s...
  • paip c++ bcb 字符串String分割split 为 TStringList 不对的的问题解决
  • 利用工厂模式的设计方法,为装饰者模式创建对象,写了个简单的字符串分割 #include <string> #include <iostream> #include <vector> using namespace std; void substring( string ...
  • c++ 字符串分割函数stringsplit

    千次阅读 2017-02-04 07:36:37
    新版:  /* stringsplit.hpp sdragonx 2006-06-16 00:43:16 revise 2018/7/28 19:42 function list: ... size_t stringsplit(container, const char_type*, size_t, char_type, ... size_t stringsplit(conta...
  • C++默认没有提供字符串分割函数,若要对字符串进行分割则需自己处理。 首先想到的就是使用string::find函数查找到指定的分隔符,然后通过substr截取子串,来实现字符串分割。 更方便的方式:C++提供了从输入流中...
  • C++实现字符串分割--split string

    千次阅读 2017-12-30 18:59:12
    在别的一些语言中,包括Python,C#等语言中,字符串分割都提供了标准的函数,但是C++没有提供相关的函数。  举个例子,给定一个字符串str = "the quick brown fox" will be splitted by " ",调用函数split(str, ...
  • C++ string类型的split字符串分割函数

    千次阅读 2015-09-26 10:56:26
    std::vector<std::string> split(const std::string& s, const std::string& delim) { std::vector<std::string> elems; size_t pos = 0; size_t len = s.length(); size_t delim_len = delim.lengt
  • 在学习c++string相关基本用法的时候,发现了sstream的istringstream[1]可以将字符串类似于控制台的方式进行输入,而实质上这个行为等同于利用空格将一个字符串进行了分割,于是考虑到可以利用这个特性来实现c++...
  • C++ 字符串分割split

    2020-10-16 22:21:07
    vector<string> split(const string&... //先将要切割的字符串string类型转换为char*类型 char * strs = new char[str.length() + 1] ; //不要忘了 strcpy(strs, str.c_str()); char * d =

空空如也

空空如也

1 2 3 4 5 ... 16
收藏数 301
精华内容 120
关键字:

c++string分割字符串split

c++ 订阅