close
C++字串切割
手為了要解題目,如果概念對了,想寫出來,但偏偏題目的輸入要用空白隔開ex:how are you,那要怎辦?
 
上課一般老師都不會教這個,或不提起這個,因為這都要自己去找~~
 
#include <iostream>
#include <string.h>                              //要這個標頭檔,才能用string
#include <sstream>                             //用字串需要這個,可以字轉整數,反之也是用這個喔
#include <vector>                                //陣列
using namespace std;
 
int main()
{
    vector<string>arr;                             //設一維陣列arr
    string input;                                      //字串input , token
    string token;
    int c=0;                                             //用來記錄放的陣列位置,每空白放一個,從arr[0]開始
    getline(cin,input);                             //使用者輸入 ex:how are you, 注意只有讀一行
    istringstream delim(input);               //將打好的東西放到字串delim裡,包含空白
    while(getline(delim,token,' '))           //getline(delim[來源位置],token[存入位置],' '[分割的條件])
    {
        arr.push_back(token);                 //ex:  arr[0] = token ="how"
        c++;                                             //換arr[1]
    }
    for(int j=0;j<c;j++)                             //印出來
    {
        if(j!=c-1)                                        //印到字串最後前一個
            cout <<arr[j]<<' ';
        else
            cout << arr[j]<<endl;                //印最後一個字,換行,這是避免最後是空白,上傳資料會錯誤
    }
}
 
對輸入做一些整理好了:
 
1.讀一行
string s;
getline(cin , s);
char s[100];
cin.getline(s,100);
 
2.讀全部
string s;
getline(cin , s, EOF);
char s[1000];
cin.getline(s, 1000 , EOF);
 
3.讀字串,直到遇見空白,換行(假如打:how are you)
string s1,s2;
cin >>s1 >>s2;
cout <<s1<<' '<<s2;                 //執行後:how are
char s1[10],s2[10];
cin >>s1 >>s2;
cout <<s1<<' '<<s2;                 //同理
 
4.讀到特定字元(可以是' ' , '$' , '#' .....等)
string s;
getline( cin , s ,' ' );
char s[10];
cin.getline( s1 , 10 ,' ' );
 
5.交換 swap
string s1,s2;
cin >>s1 >>s2;
s1.swap(s2);
cout <<s1<<' '<<s2;             //執行後:are you
char s1[10],s2[10],temp[10];       //temp 是暫存值
cin >>s1 >>s2;
strcpy(temp,s1);    
strcpy(s1,s2);
strcpy(s2,temp);
cout << s1 << ' ' <<s2;
 
6.比大小 (  根據ASCII  )
string比較簡單,你會吧~~
 
char s1[10],s2[10];
if(strcmp (s1,s2) >0) {~~~};
結果為負 s1<s2: abc 和 edf ; 等0就一樣 ; 正就反之
 
7.字串接字串
string s1,s2;
s1 += s2;
char s1[10],s2[10];
strcat(s1,s2);
 
end!!
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 佑佑 的頭像
    佑佑

    佑佑的語言

    佑佑 發表在 痞客邦 留言(0) 人氣()