Board logo

標題: stringstream 字串串流 (二) [打印本頁]

作者: tonyh    時間: 2022-12-8 19:47     標題: stringstream 字串串流 (二)

試利用 stringstream 型別,來進行變數型態的轉換,譬如 int 轉 float、double轉 string 等。
stringstream 物件再重複使用前,必須先做初始化 (清空) 的動作。
我們可透過 <typeinfo> 標頭檔所提供的 typeid() 接 name() 函式,查看變數的型態。

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<sstream>
  4. #include<typeinfo>
  5. using namespace std;
  6. int main()
  7. {
  8.     stringstream ss;
  9.     int a=123;
  10.     double b=456.789;
  11.     float c;
  12.     string d;
  13.    
  14.     ss<<a;
  15.     ss>>c;
  16.     cout<<c<<endl;
  17.      
  18.     ss.str("");   //重複使用前需初始化
  19.     ss.clear();
  20.    
  21.     ss<<b;
  22.     ss>>d;
  23.     cout<<d<<endl;
  24.    
  25.     cout<<typeid(a).name()<<endl;
  26.     cout<<typeid(b).name()<<endl;
  27.     cout<<typeid(c).name()<<endl;
  28.     cout<<typeid(d).name()<<endl;
  29.    
  30.     system("pause");     
  31.     return 0;   
  32. }
複製代碼

作者: 黃宇綸    時間: 2022-12-8 20:28

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. //#define int ll
  5. #define FOR(i,a,b) for(int i=a;i<b;i++)
  6. #define REP(i,n) FOR(i,0,n)
  7. #define REP1(i,n) FOR(i,1,(n)+1)
  8. #define RREP(i,n) for(int i=(n)-1;i>=0;i--)
  9. #define f first
  10. #define s second
  11. #define pb push_back
  12. #define ALL(x) x.begin(),x.end()
  13. #define SZ(x) (int)(x.size())
  14. #define SQ(x) (x)*(x)
  15. #define pii pair<int,int>
  16. #define Graph vector<vector<int>>
  17. #define IOS() cin.sync_with_stdio(0),cin.tie(0),cout.tie(0)
  18. const ll inf=(1ll<<63)-1;
  19. const int maxn=1e4+5;
  20. const ll mod=1e9+7;
  21. stringstream ss;
  22. signed main()
  23. {
  24.     IOS();
  25.     int a=123;
  26.     double b=456.789;
  27.     float c;
  28.     string d;
  29.     ss<<a;
  30.     ss>>c;
  31.     cout<<c<<endl;
  32.     ss.str("");
  33.     ss.clear();
  34.     ss<<b;
  35.     ss>>d;
  36.     cout<<d<<endl;
  37.     cout<<typeid(a).name()<<endl;
  38.     cout<<typeid(b).name()<<endl;
  39.     cout<<typeid(c).name()<<endl;
  40.     cout<<typeid(d).name()<<endl;
  41.     return 0;
  42. }
複製代碼

作者: 黃宇瑄    時間: 2022-12-8 20:29

  1. #include<bits/stdc++.h>
  2. #include<sstream>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {
  7.     stringstream ss;
  8.     int a=123;
  9.     double b=456.789;
  10.     float c;
  11.     string d;
  12.     ss<<a;
  13.     ss>>c;
  14.     cout<<c<<endl;
  15.     ss.str("");
  16.     ss.clear();
  17.     ss<<b;
  18.     ss>>d;
  19.     cout<<d<<endl;
  20.     cout<<typeid(a).name()<<endl;
  21.     cout<<typeid(b).name()<<endl;
  22.     cout<<typeid(c).name()<<endl;
  23.     cout<<typeid(d).name()<<endl;   
  24.     return 0;   
  25. }
複製代碼

作者: 黃宥華    時間: 2022-12-8 20:31

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. stringstream ss;
  4. int main()
  5. {
  6.     cin.sync_with_stdio(0);
  7.     cin.tie();
  8.     string str;
  9.     string str1="abc";
  10.     string str2="狗咬豬";
  11.     int a=123;
  12.     float b=3.456,c;
  13.     ss<<a;
  14.     ss>>c;
  15.     cout<<c<<endl;
  16.     ss.clear();
  17.     ss<<b;
  18.     ss>>str;
  19.     cout<<str<<endl;
  20.     cout<<typeid(a).name()<<endl;
  21.     cout<<typeid(b).name()<<endl;
  22.     cout<<typeid(c).name()<<endl;
  23.     cout<<typeid(str).name()<<endl;
  24.     //cout<<ss.str()<<endl;
  25.     //ss>>str;
  26.     //cout<<str;
  27.     return 0;
  28. }
複製代碼

作者: 李沛昂    時間: 2022-12-8 20:33

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<sstream>
  4. #include<typeinfo>
  5. using namespace std;
  6. int main()
  7. {
  8.     stringstream ss;
  9.     int a=123;
  10.     double b=456.789;
  11.     float c;
  12.     string d;
  13.     ss<<a;
  14.     ss>>c;
  15.     cout<<c<<endl;
  16.     ss.str("");
  17.     ss.clear();
  18.     ss<<b;
  19.     ss>>d;
  20.     cout<<d<<endl;
  21.     cout<<typeid(a).name()<<endl;
  22.     cout<<typeid(b).name()<<endl;
  23.     cout<<typeid(c).name()<<endl;
  24.     cout<<typeid(d).name()<<endl;
  25.     system("pause");     
  26.     return 0;   
  27. }
複製代碼





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