返回列表 發帖

stringstream 字串串流 (二)

本帖最後由 tonyh 於 2024-6-8 11:32 編輯

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




型態轉換方法一:stringstream 元件
  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. }
複製代碼
型態轉換方法二:to_string()、stoi()、stof()、stod() 等內建函數
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {   
  7.     int a=123;
  8.     string s=to_string(a);
  9.     cout<<typeid(s).name()<<endl;
  10.     cout<<typeid(stoi(s)).name()<<endl;
  11.     cout<<typeid(stof(s)).name()<<endl;
  12.     cout<<typeid(stod(s)).name()<<endl;  
  13.     system("pause");
  14.     return 0;   
  15. }
複製代碼

  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. }
複製代碼

TOP

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

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<<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. }
複製代碼

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<<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. }
複製代碼

TOP

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

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

TOP

  1. #include<cstdlib>
  2. #include<iostream>
  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.     ss.str("");  
  16.       ss.clear();
  17.          ss<<b;
  18.      ss<<b;
  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.     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 s;
  9.     int a=123;
  10.     double b=456.789;
  11.     float c;
  12.     string d;
  13.     s<<a;
  14.     s>>c;
  15.     cout<<c;
  16.     s.str("");
  17.     s.clear();
  18.     s<<b;
  19.     s>>d;
  20.     cout<<d;
  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. }
複製代碼

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<<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. }
複製代碼

TOP

#include<bits/stdc++.h>
using namespace std;
int main()
{
    stringstream ss;
    int a = 123;
    double b=456.789;
    float c;
    string d;
    ss<<a;
    ss>>c;
    cout<<c<<endl;
    ss.str("");
    ss.clear();
    ss<<b;
    ss>>d;
    cout<<d<<endl;
   
    cout<<typeid(a).name()<<endl;
    cout<<typeid(b).name()<<endl;
    cout<<typeid(c).name()<<endl;
    cout<<typeid(d).name()<<endl;
    return 0;
}

TOP

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. int main()
  4. {
  5.     int a=123;
  6.     string s=to_string(a);
  7.     cout<<typeid(s).name()<<endl;
  8.     cout<<typeid(stoi(s)).name()<<endl;
  9.     cout<<typeid(stof(s)).name()<<endl;
  10.     cout<<typeid(stod(s)).name()<<endl;
  11.     system("pause");
  12.     return 0;
  13. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {   
  7.     int a=123;
  8.     string s=to_string(a);
  9.     cout<<typeid(s).name()<<endl;
  10.     cout<<typeid(stoi(s)).name()<<endl;
  11.     cout<<typeid(stof(s)).name()<<endl;
  12.     cout<<typeid(stod(s)).name()<<endl;  
  13.     system("pause");
  14.     return 0;   
  15. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {
  7.     int a=123;
  8.     string s=to_string(a);
  9.     cout<<typeid(s).name()<<endl;
  10.     cout<<typeid(stoi(s)).name()<<endl;
  11.     cout<<typeid(stof(s)).name()<<endl;
  12.     cout<<typeid(stod(s)).name()<<endl;
  13.     system("pause");
  14.     return 0;
  15. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {   
  7.     int a=123;
  8.     string s=to_string(a);
  9.     cout<<typeid(s).name()<<endl;
  10.     cout<<typeid(stoi(s)).name()<<endl;
  11.     cout<<typeid(stof(s)).name()<<endl;
  12.     cout<<typeid(stod(s)).name()<<endl;  
  13.     system("pause");
  14.     return 0;   
  15. }
複製代碼
  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. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {   
  7.     int a=123;
  8.     string s=to_string(a);
  9.     cout<<typeid(s).name()<<endl;
  10.     cout<<typeid(stoi(s)).name()<<endl;
  11.     cout<<typeid(stof(s)).name()<<endl;
  12.     cout<<typeid(stod(s)).name()<<endl;  
  13.     system("pause");
  14.     return 0;   
  15. }
複製代碼

TOP

  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<typeinfo>
  4. using namespace std;
  5. int main()
  6. {   
  7.     int a=123;
  8.     string s=to_string(a);
  9.     cout<<typeid(s).name()<<endl;
  10.     cout<<typeid(stoi(s)).name()<<endl;
  11.     cout<<typeid(stof(s)).name()<<endl;
  12.     cout<<typeid(stod(s)).name()<<endl;  
  13.     system("pause");
  14.     return 0;   
  15. }
複製代碼

TOP

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

TOP

返回列表