本帖最後由 鄭繼威 於 2023-10-13 21:16 編輯
結合stringstream 字串串流 (二)完成輸入加法字串算式
推法1-分割的時候順便+- #include<iostream>
- #include<cstdlib>
- #include<sstream>
- #include<string>
- using namespace std;
- int main(){
- //變數型態 變數名字
- string str; //要讀的字串
- cout<<"請輸入一個加法算式 (譬如 5+7+2): ";
- cin>>str;
- str+="+"; //最後加上+
-
- string tmp=""; //存放我要分割的字串->在後沒有遇到+之前東西都會放這裡
- int sum=0; //累加
- stringstream ss;
- int n;
- //讀字串
- for(int i=0;i<str.size();i++)
- {
- if(str[i]=='+')
- {
- //累加的動作
- //1. string tmp轉成int z(型態轉換)
- ss<<tmp;
- ss>>n;
- //2. 累加n
- sum=sum+n; //轉換後才能運算
-
- //3. 清空ss,tmp
- tmp=""; //加完後tmp要清空
- ss.clear(); //重複使用前需初始化
- }
- else{
- //字串相加
- tmp+=str[i];
- }
- }
-
- cout<<str.substr(0,str.length()-1)<<"="<<sum<<endl;
-
- system("pause");
- return 0;
- }
複製代碼 法2-分割放入陣列後再+- #include<iostream>
- #include<cstdlib>
- #include<sstream>
- #include<string>
- using namespace std;
- int main()
- {
- int sum=0;
- string str;
- cout<<"請輸入一個加法算式 (譬如 5+7+2): ";
- getline(cin,str);
- string res[50];
- string tmp="";
- int j=0;
- for(int i=0; i<str.length(); i++)
- {
- if(str[i]=='+')
- {
- res[j]=tmp;
- tmp="";
- j++;
- continue;
- }
- tmp+=str[i];
- }
- res[j]=tmp;
- for(int i=0; res[i]!=""; i++)
- {
- int n;
- stringstream ss;
- ss<<res[i];
- ss>>n;
- sum+=n;
- }
- cout<<sum<<endl;
- system("pause");
- return 0;
- }
複製代碼 |