el uso de STL sstream

el uso de STL sstream

说在前面:

Biblioteca define tres tipos: istringstream, ostringstream y la stringstream, se utilizan para el flujo de entrada y salida de las operaciones de entrada y de salida. Además, existe una versión correspondiente de caracteres anchos de cada conjunto de clases. Tenga en cuenta, Use objeto de cadena en lugar de un conjunto de caracteres. Esto evita el riesgo de desbordamiento de búfer. Además, los parámetros pasados ​​el tipo de objeto diana se deriva automáticamente, incluso si un identificador de formato incorrecto hay peligro.

使用时必须加上#include<sstream>

  • stringstream objeto se utiliza para entrada de su cadena, un espacio para el separador se separe de la fila

    #include <iostream>
    #include <stack>
    #include <sstream>
    using namespace std;
    int main()
    {
        string str= "hello world I am very happy!";                           
        stringstream sstream(str);                                              //sstream<<
        while (sstream)
        {
            string substr;
            sstream>>substr;
            cout << substr <<" ";    //也可vec.push_back(substr);
        } 
        return 0;
    }
    //  输出详解:
    hello world I am very happy!
    //  大家可能会问这有什么用,如果配上栈结构便能将这个逆序输出:
    #include <iostream>
    #include <stack>
    #include <sstream>
    using namespace std;
    int main()
    {
        string str= "hello world I am very happy !",tmp;                           
        stringstream sstream(str);                                            
        stack<string>  s;
        while(sstream>>tmp)
        {
            s.push(tmp);
        }
        while(!s.empty())
        {
            cout<<s.top();
            s.pop();
            if(s.size()!=0)
            cout<<" ";
        }
        cout<<endl;
        return 0;
    }
    //  输出结果:
    ! happy very am I world hello
    
  • tipo de conversión

    Stringstream llevó a cabo utilizando la conversión de tipo común

    (Int, long, float, doble, doble largo, largo, largo)

/-----string转int-----/
string str= "123456789";                           
stringstream sstream(str);                                            
int tmp;
sstream>>tmp;
cout<<tmp<<endl;     //  输出结果123456789
/-----int转string-----/
   int tmp=123456;
    stringstream t;
    string s;
    t<<tmp;
    t>>s;
    cout<<s<<endl;  //  输出结果123456
/-----int转char-----/
    int tmp=123456;
    stringstream t;
    char s[10];
    t<<tmp;
    t>>s;
    for(int i=0;i<strlen(s);i++)
        cout<<s[i];   //  输出结果123456
/-----char转int-----/
    stringstream t;
    char s='8';
    int tmp;
    t<<s;
    t>>tmp;
    cout<<tmp;
    return 0;  //  输出8;
  • Usando la to_string () para un tipo común de conversión, la cadena de valor de retorno

    函数原型: (C++11才有这个函数)
    cadena to_string (int val);
    to_string cadena (larga val);
    to_string cadena (mucho, mucho val);
    to_string cadena (val sin signo);
    to_string cadena (sin firmar val largo);
    to_string cadena (unsigned long val largo);
    to_string cadena (float val);
    to_string cadena (doble val);
    to_string cadena (doble largo val);

    características:

    El valor en una cadena. Devuelve una cadena correspondiente.

    Ejemplos:

  • s1=to_string(10.5);                        //double到string
    s2=to_string(123);                        //int到string
    s3=to_string(true);                     //bool到string
    
    
    #include <iostream>
    #include <stack>
    #include <sstream>
    #include <cstring>
    #include <iomanip>
    using namespace std;
    int main()
    {
        string s1,s2,s3;
        s1=to_string(10.5); //double到string
        s2=to_string(123);//int到string
        s3=to_string(true);//bool到string
        cout<<fixed<<showpoint<<setprecision(1);
        cout<<s1<<" "<<s2<<" "<<s3<<endl;
        return 0;
    }
    //  10.500000 123 1
    
    
    Reutilizar objetos stringstream

    Si va a utilizar el mismo objeto varias veces stringstream conversión, recordar de nuevo antes de cada conversión para utilizar el método clear ();

    Reutilizar el mismo stringstream en múltiples conversiones en (pero no siempre crear un nuevo objeto) el mayor beneficio es objetivo de eficiencia. stringstream la construcción y el objeto destructor es por lo general mucho tiempo de CPU.

    #include <iostream>
    #include <stack>
    #include <sstream>
    #include <cstring>
    using namespace std;
    int main()
    {                                         
        stringstream stream;
        int first;
        string second;
        stream<< "456"; //插入字符串
        stream >> first; //转换成int
        cout << first << endl;
        stream.clear(); //在进行多次转换前,必须清除stream,否则第二个数据可能输出乱码
        stream << "true"; //插入bool值
        stream >> second; //提取出int
        cout << second << endl;
        return 0;
    }
    //  输出结果:
    456
    true
    

Supongo que te gusta

Origin www.cnblogs.com/Yqifei/p/12660054.html
Recomendado
Clasificación