程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++的String類的字符串分割實現----(效果等於Java的String類的split函數)

C++的String類的字符串分割實現----(效果等於Java的String類的split函數)

編輯:C++入門知識

功能需求,輸入一個字符串“1-2-3”切割出“1”、“2”、“3”。在Java下直接用String的split函數就可以了。c++下String沒有直接提供這個函數,需要自己寫。

 

網上給出的解決方案是這裡的三種方法。但我是通過JNI訪問的,在裡面用這些vector可能不中,自己封裝了個,僅供參考:

[cpp] String recogScop = "01-02-03"; 
cout<<recogScop<<endl; 
int size = recogScop.size(); 
int pos = 0; 
string result[20] ; 
 
for(int i=0, j=0; i<size; i++,j++ ) 

    pos = recogScop.find("-", i); 
 
    if(pos == -1) 
    { 
       String subEnd = recogScop.substr(i, size - i); //最後一個字符串  
        result[j] = subEnd; 
        break; 
    } 
    if(pos >0) 
    { 
        String sub = recogScop.substr(i, pos-i); 
        result[j] = sub; 
        i = pos; 
    } 

 
for(int i=0; result[i] != ""; i++) 
    cout<<result[i]<<endl;   

    String recogScop = "01-02-03";
    cout<<recogScop<<endl;
    int size = recogScop.size();
    int pos = 0;
    string result[20] ;

    for(int i=0, j=0; i<size; i++,j++ )
    {
        pos = recogScop.find("-", i);

        if(pos == -1)
        {
           String subEnd = recogScop.substr(i, size - i); //最後一個字符串
            result[j] = subEnd;
            break;
        }
        if(pos >0)
        {
            String sub = recogScop.substr(i, pos-i);
            result[j] = sub;
            i = pos;
        }
    }

    for(int i=0; result[i] != ""; i++)
        cout<<result[i]<<endl; 

 

 

 注意上面find的結果pos大於0,表示能夠找到“-”分隔符,如果失敗,也就是最後一個分隔符,pos會等於-1.

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved