#include <iostream> #include <string> #include <sstream> using namespace std; int main(int argc, char** argv) { int a; string Str1, Str2; /*=========================ISTRINGSTREAM=========================*/ /* istringstream 對象用來把一個已定字符串中的以空格隔開的內容提取出來 */ /* istringstream 只支持 >> 操做符 */ string Input = "abc 123 bcd 456 sss 999"; istringstream iss(Input);//經過構造函數對istringstream類進行賦值,能夠將一個字符串變量的值傳遞給istringstream對象 //若傳入的字符串是常量,也能夠進行以下賦值 //iss.str("ccc 555 aaa 333"); //擴展,iss對象支持對C語言流的操做,因此也能夠進行以下的賦值 //iss.str(Input.c_str()); while(iss >> Str1 >> a) cout << Str1 << " " << a << endl; /*=========================OSTRINGSTREAM=========================*/ /* ostringstream 對象用來進行格式化的輸出,能夠方便的將各類類型轉換爲string類型 */ /* ostringstream 只支持 << 操做符 */ //格式化輸出 ostringstream oss; oss << 3.14; oss << " and "; oss << 55555555; oss << endl; cout << oss.str(); //int, float, double型轉化爲字符串 oss.str("");//每次使用前清空,oss.clear() 並不能清空內存 oss.clear(); oss.precision(9); oss << 3.123456789; Str2 = oss.str(); cout << Str2 << endl; /*=========================STRINGSTREAM=========================*/ //stringstream類 //該類就是上述istringstream和ostringstream類的綜合,支持<<, >>操做符,能夠進行字符串到其它類型的快速轉換 stringstream ss; ss << Input; while(ss >> Str1 >> a) { cout << Str1 << " " << a << endl; } //總結這幾個類istringstream, ostringstream, stringstream, 包含在<sstream>文件裏 //輸入方式: //1.構造函數。iss, oss, ss 都支持。eg. istreamstring iss(Input), ostreamstring(Input), stringstream ss(Input) //2.<< 操做符。oss, ss 支持。 oss << Input, ss << Input; //3. .Str()函數,提供C中的字符串頭指針,或者匿名內存首地址 // eg. iss.str(Input.c_str()), iss.str("abc 123 345") // oss.str(Input.c_str()), oss.str("abc 123 345") // ss.str(Input.c_str()), ss.str("abc 123 345") //輸出方式: //1. 經過.str()獲得一份拷貝 //eg. Str1 = iss.str(), Str1 = oss.str(), Str1 = ss.str(); // 顯然,這個也提供C語言的接口 // printf("%s", iss.str().c_str()), printf("%s", oss.str().c_str()), printf("%s", ss.str().c_str()) //2. >>操做符, iss和ss支持該操做 //每次不一樣的使用時刻必需要清空 //ss.str(""), iss.str(""), oss.str(""),暫時沒有發現其它的清空方法 //最大的用處 //輸入string類型,能夠經過iss 或 ss 類提取出來,功能相似於C語言中的sscanf()函數, 在TC中比較常見 //提供字符串和各類類型之間的轉換 return 0; }