返回列表 發帖

stringstream 字串串流 (二)-型態轉換

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

試利用 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<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  17.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  18.    
  19.     //重複使用前需初始化
  20.     ss.clear();
  21.    
  22.     ss<<b;
  23.     ss>>d;
  24.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  25.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  26.    
  27.    
  28.     system("pause");
  29.     return 0;
  30. }
複製代碼

  1. #include<bits/stdc++.h>
  2. using namespace std;

  3. int main()
  4. {
  5.     cin.tie(0);
  6.     cin.sync_with_stdio(0);
  7.     stringstream ss;
  8.     int a=123;
  9.     float c=123;
  10.     double b=456.789;
  11.     string d="456.789";
  12.     ss<<a;
  13.     ss>>c;
  14.     cout<<"a="<<a<<"型態:"<<typeid(a).name()<<endl;
  15.     cout<<"c="<<c<<"型態:"<<typeid(c).name()<<endl;

  16.     ss.clear();
  17.     ss<<b;
  18.     ss>>d;
  19.     cout<<"b="<<b<<"型態:"<<typeid(b).name()<<endl;
  20.     cout<<"d="<<d<<"型態:"<<typeid(d).name()<<endl;





  21.     return 0;
  22. }
複製代碼

TOP

  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.    
  16.     cout<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  17.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  18.     ss.clear();
  19.    
  20.     ss<<b;
  21.     ss>>d;
  22.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  23.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  24.     system("pause");
  25.     return 0;
  26. }
複製代碼

TOP

  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<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  17.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  18.    
  19.    
  20.     ss.clear();
  21.    
  22.     ss<<b;
  23.     ss>>d;
  24.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  25.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  26.    
  27.    
  28.     system("pause");
  29.     return 0;
  30. }
複製代碼

TOP

  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<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  17.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  18.    
  19.     ss.clear();
  20.    
  21.     ss<<b;
  22.     ss>>d;
  23.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  24.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  25.    
  26.    
  27.     system("pause");
  28.     return 0;
  29. }
複製代碼

TOP

  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<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  17.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  18.    
  19.     ss.clear();
  20.    
  21.     ss<<b;
  22.     ss>>d;
  23.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  24.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  25.    
  26.     system("pause");
  27.     return 0;
  28. }
複製代碼

TOP

  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<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  16.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  17.     ss.clear();
  18.     ss<<b;
  19.     ss>>d;
  20.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  21.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  22.    
  23.    
  24.     system("pause");
  25.     return 0;
  26. }
複製代碼
陳牧謙

TOP

  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<<"a="<<a<<",型態為:"<<typeid(a).name()<<endl;
  17.     cout<<"c="<<c<<",型態為:"<<typeid(c).name()<<endl;
  18.    
  19.    
  20.     ss.clear();
  21.    
  22.     ss<<b;
  23.     ss>>d;
  24.     cout<<"b="<<b<<",型態為:"<<typeid(b).name()<<endl;
  25.     cout<<"d="<<d<<",型態為:"<<typeid(d).name()<<endl;
  26.    
  27.    
  28.     system("pause");
  29.     return 0;
  30. }
複製代碼

TOP

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

TOP

返回列表