C++ CString 求分割字符串高效函数 5C

简单贴一段现有代码
///参数为 源文本 分割结果指针数组 数组个数 用作分割的字符串
void StringSplit(CString data, CString* datas, int datasCount, CString men)
{

int i = 0;
while (i<datasCount)
{
int EndIndex = data.Find(men);
if (EndIndex == -1)
{
datas[i] = data;
break;
}
datas[i] = data.Mid(0, EndIndex);
data.Delete(0, EndIndex + men.GetLength());
++i;
}

}

求一段高效率的字符串分割函数

6个回答

这已经很高效了吧,复杂度达到O(N)了,不知道你还想优化到什么程度

JonathanYan
JonathanYan 回复: 比如哪个语言的,具体时间差多少,别的语言封装的函数还是像你一样写成算法
接近 2 年之前 回复
qq_40395537
qq_40395537 回复JonathanYan: 速度太慢了,更其他语言的分割函数,速度差太多了
接近 2 年之前 回复
 void StringSplit(CString data, CString* datas, int datasCount, CString men){
   int index = 0;
     for( int i = 0; i < data.length(); i++ ){
         if( data[i] == men) {
           if( index < datasCount ){
               index++;
             }
         } else {
           datas[index] += data[i];
         }
     }
 }
JonathanYan
JonathanYan 看下面那个,这个有问题
接近 2 年之前 回复
void StringSplit(CString data, CString* datas, int datasCount, CString men){
  int index = 0;
  for( int i = 0; i < data.length(); i++ ){
    if( data[i] == men && index < datasCount && datas[index].length() > 0 ){
      index++;
    } else {
      datas[index] += data[i];
    }
  }
}

速度还是太慢,跟c#的字符串分割速度还是差了很多

用strtok函数实现吧

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐