程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [一個按標志分拆字符串的好方法]strtok函數簡介及應用。

[一個按標志分拆字符串的好方法]strtok函數簡介及應用。

編輯:C++入門知識

剛剛接觸strtok函數,感覺十分神奇。   定義:   strtok 語法:       #include <string.h>   char *strtok( char *str1, const char *str2 ); 功能:函數返回字符串str1中緊接“標記”的部分的指針, 字符串str2是作為標記的分隔符。如果分隔標記沒有找到,函數返回NULL。為了將字符串轉換成標記,第一次調用str1 指向作為標記的分隔符。之後所以的調用str1 都應為NULL。   例如:       [cpp]   char str[] = "now # is the time for all # good men to come to the # aid of their country";      char delims[] = "#";      char *result = NULL;               result = strtok( str, delims );               while( result != NULL ) {          printf( "result is \"%s\"\n", result );           result = strtok( NULL, delims );      }   這個樣例的結果為:   result is "now " result is " is the time for all " result is " good men to come to the " result is " aid of their country"   實現了通過'#'分拆的目的。   典型應用,如HDU 1106:點擊打開題目鏈接    要求按5為分割進行拆解字符串,並轉換為字符串進行排序。一般的方法為直接模擬,但是如果靈活使用字符串分割函數strtok(注意它的返回值是指針),字符串轉數字函數atoi(),這個題十分簡單。   [cpp]   #include <iostream>   #include <algorithm>   #include <cstring>   #include <string>   #include <string.h>   #include <stdlib.h>   using namespace std;      bool cmp(int a,int b)   {       return a<b;   }      int num[1009];      int main()   {       char tar[1009];       while(cin>>tar)       {           string numpack[1000];           memset(num,0,sizeof(num));           int pos=0;           int start=0,end=0;                      char *temp;                      temp=strtok(tar,"5");   //按5分開也                      while(temp!=NULL)           {                numpack[pos]=temp;                temp=strtok(NULL,"5");  //基本用法 ,把指針存入數組中                 pos++;                       }                                             for(int i=0;i<pos;i++)           {               num[i]=atoi(numpack[i].c_str());           }                          sort(num,num+pos,cmp);                      for(int i=0;i<pos;i++)           {               cout<<num[i];               if(i!=pos-1)                   cout<<" ";               else                   cout<<endl;           }                         }              return 0;   }    

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