返回列表 發帖

[作業] 字串分割 (二)

本帖最後由 鄭繼威 於 2023-3-29 20:11 編輯

結合字串分割 (一)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.             //型態轉換(char->int)
  23.             ss<<tmp;
  24.             ss>>n;
  25.             sum=sum+n;        //轉換後才能運算
  26.             
  27.             tmp="";                    //加完後tmp要清空
  28.                 ss.clear();                //重複使用前需初始化
  29.         }
  30.         else{
  31.             tmp+=str[i];        //123
  32.         }
  33.     }
  34.    
  35.     cout<<str.substr(0,str.length()-1)<<"="<<sum<<endl;
  36.       
  37.     system("pause");
  38.     return 0;
  39. }
複製代碼
法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. }
複製代碼

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

此帖僅作者可見

TOP

返回列表