Board logo

標題: 字串分割 [打印本頁]

作者: 鄭繼威    時間: 2023-10-13 17:29     標題: 字串分割

本帖最後由 鄭繼威 於 2023-10-13 21:16 編輯

結合stringstream 字串串流 (二)完成輸入加法字串算式


推法1-分割的時候順便+
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<sstream>
  4. #include<string>
  5. using namespace std;

  6. int main(){
  7.     //變數型態 變數名字
  8.     string str;        //要讀的字串
  9.     cout<<"請輸入一個加法算式 (譬如 5+7+2): ";
  10.     cin>>str;       
  11.     str+="+";        //最後加上+
  12.        
  13.     string tmp="";        //存放我要分割的字串->在後沒有遇到+之前東西都會放這裡
  14.     int sum=0;        //累加
  15.     stringstream ss;
  16.     int n;
  17.     //讀字串
  18.     for(int i=0;i<str.size();i++)
  19.     {
  20.         if(str[i]=='+')
  21.         {
  22.             //累加的動作
  23.             //1. string tmp轉成int z(型態轉換)
  24.             ss<<tmp;
  25.             ss>>n;

  26.             //2. 累加n
  27.             sum=sum+n;        //轉換後才能運算
  28.             
  29.             //3. 清空ss,tmp
  30.             tmp="";                    //加完後tmp要清空
  31.                 ss.clear();                //重複使用前需初始化
  32.         }
  33.         else{
  34.             //字串相加
  35.             tmp+=str[i];
  36.         }
  37.     }
  38.    
  39.     cout<<str.substr(0,str.length()-1)<<"="<<sum<<endl;
  40.       
  41.     system("pause");
  42.     return 0;
  43. }
複製代碼
法2-分割放入陣列後再+
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<sstream>
  4. #include<string>
  5. using namespace std;
  6. int main()
  7. {
  8.     int sum=0;
  9.     string str;
  10.     cout<<"請輸入一個加法算式 (譬如 5+7+2): ";
  11.     getline(cin,str);
  12.     string res[50];
  13.     string tmp="";
  14.     int j=0;
  15.     for(int i=0; i<str.length(); i++)
  16.     {
  17.         if(str[i]=='+')
  18.         {
  19.             res[j]=tmp;
  20.             tmp="";
  21.             j++;  
  22.             continue;
  23.         }
  24.         tmp+=str[i];
  25.     }
  26.     res[j]=tmp;
  27.     for(int i=0; res[i]!=""; i++)
  28.     {
  29.         int n;
  30.         stringstream ss;
  31.         ss<<res[i];
  32.         ss>>n;
  33.         sum+=n;   
  34.     }
  35.     cout<<sum<<endl;
  36.     system("pause");     
  37.     return 0;   
  38. }
複製代碼

作者: 孫子傑    時間: 2023-10-13 21:08

此帖僅作者可見
作者: 李柏漢    時間: 2023-10-19 23:41

此帖僅作者可見
作者: 蔡沛倢    時間: 2023-10-21 10:55

此帖僅作者可見
作者: 朱奕祈    時間: 2024-5-21 20:03

此帖僅作者可見




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2