c++ split函数(C++里有没有类似于String.Split那样的函数)

本文目录
- C++里有没有类似于String.Split那样的函数
- c++问题,主要是将多个浮点数从字符串中分离
- C++ 中怎么实现高效的string的split函数
- C++ 的 string 为什么不提供 split 函数
- C++ Builder有没有字符串切割的函数Split-CSDN论坛
- Qt c++设计中 用split 拆分一串数字和字符 例如 Qstring aa=“002302天气预报“;
- c++,如何分割字符串到不同数组
C++里有没有类似于String.Split那样的函数
可以明确的一点是,C++标准库里没有。
不过大量的第三方库都提供这个功能,比如Qt、Boost等。
split函数的实现也比较简单,可以尝试自行编写。
c++问题,主要是将多个浮点数从字符串中分离
int split(char *s, double* buf){
char c;
double d,ta,p;
int i,k=0,sign,dec;
d=0.0;
for(i=0; s; i++){
//忽略非数字字符
c=s;
while((c《’0’ || c》’9’) && c!=’\0’ && c!=’.’ && c!=’-’ && c!=’+’)
c=s;
if(c==’\0’) break;
//遇到一个数据,将其分离出来
d=0.0;
dec=0;
p=1;
switch(c){
case ’.’: //是纯小数
dec=1;
sign=1; break;
case ’+’:
if(s==’.’) dec=1,i++;
sign=1; break;
case ’-’:
if(s==’.’) dec=1,i++;
sign=-1; break;
default: //整数部分的最高位数字
sign=1;
d=c-48;
}
//整数部分的次高位及以后的各个数字,或者小数部分的各个数字
c=s;
while(c》=’0’ && c《=’9’){
ta=c-48;
if(dec){
p*=10;
d=d+ta/p;
}else
d=10*d+ta;
c=s;
}
if(dec==0 && c==’.’){ //前面分离的是整数部分,且有小数部分
//分离小数部分
c=s;
p=1;
while(c》=’0’ && c《=’9’){
ta=c-48;
p*=10;
d=d+ta/p;
c=s;
}
}
//一个数据分解完毕
buf=sign*d;
}
return k; //分解出的数据个数
}
void main(){
char s="sort 3.5 1.5 -15 +13 -.03 +.98 7. 54 2.6 31.6";
double a={ 0.0 };
int i,k;
k=split(s,a);
for(i=0; i《k; i++)
cout 《《a 《《" ";
cout 《《endl;
}
C++ 中怎么实现高效的string的split函数
看了一下你的代码,给你以下提示:1、字符串分割函数有什么作用:这些代码中的split函数将一个字符串分割成两个字符串。split函数有两个参数,第一个参数str,带入要进行分割的字串。第二个参数pattern,带入分割标记字串。什么意思呢,比如说,有一个字串,“AABCx;xACDEx;xCDSS”,你要把它分成多个字串,以中间的“x;x”为标记特征。那么,你可以这样使用它split("AABCx;xACDEx;xCDSS","x;x"),它将返回vector的一组string**特别提示**关于vector,这是一个比较少见的玩意儿,具体用法,请百度关键词“STLvector用法介绍”2、这个函数的实现,上面源代码都清清楚楚,关键不外乎:pos=str.find(pattern,i);//定位查找。strings=str.substr(i,pos-i);//字串截取。其它的是最基本的语句了,自个慢慢看就能懂的,如果不懂,那就得找基本资料,慢慢学一下C++语句了。
C++ 的 string 为什么不提供 split 函数
支持split的话,不管返回什么,都是要分配新内存的。然而C++的运行环境都不见得能保证有new/malloc这类函数,更不要提vector这么重的库了。附加split会产生很强的平台要求,这个与C++一直强调轻平台&可裁剪的思路是背道而驰的。所以至今没有内置split,而是通过第三方库或者boost这类准第三方库提供。
C++ Builder有没有字符串切割的函数Split-CSDN论坛
有strtok这个方法
/* strtok example */
#include 《stdio.h》
#include 《string.h》
int main ()
{
char str = "aaa bbb ccc ddd eee fff";
const char * split = " ";
char * p;
p = strtok (str,split);
while(p!=NULL) {
printf ("%s\n",p);
p = strtok(NULL,split);
}
Qt c++设计中 用split 拆分一串数字和字符 例如 Qstring aa=“002302天气预报“;
QString 类中各函数的作用。 一、字符串连接函数。 1、QString也重载的+和+=运算符。这两个运算符可以把两个字符串连接到一起。 2、QString的append()函数则提供了类似的操作,例如: str = "User: "; str.append(userName); str.append("\n")
c++,如何分割字符串到不同数组
vector《string》 Split(const string& str, const string& delims, int maxSplits)
{
vector《string》 ret;
if(str.empty())
return ret;
// Pre-allocate some space for performance
ret.reserve(maxSplits ? maxSplits+1 : 10); // 10 is guessed capacity for most case
int numSplits = 0;
// Use STL methods
size_t start, pos;
start = 0;
do
{
pos = str.find_first_of(delims, start);
if (pos == start)
{
// Do nothing
start = pos + 1;
}
else if (pos == string::npos || (maxSplits && numSplits == maxSplits))
{
// Copy the rest of the string
ret.push_back( str.substr(start) );
break;
}
else
{
// Copy up to delimiter
ret.push_back( str.substr(start, pos - start) );
start = pos + 1;
}
// parse up to next real data
start = str.find_first_not_of(delims, start);
++numSplits;
} while (pos != string::npos);
return ret;
}
str是要被切分的字符串,delims是分隔符,maxSplits分隔符的最大数目。

更多文章:
数据库管理系统和数据库系统分别侧重(数据库,数据库管理系统,数据库系统,这三个分别是什么意思并举个实例)
2026年9月7日 17:00
springmvc的依赖(springMVC的注入方式有哪几种,这与springMVC依赖)
2026年9月7日 14:00
display flex 自动换行(overflow-y:hidden;overflow-x:auto;无效解决方法)
2026年9月7日 11:00
timestamp without time zone(Postgresql中to_date()函数使用问题)
2026年9月7日 09:40





