# 4. Stringstream 在C語言的時候處理字串非常麻煩,而且在輸入字串的時候要使用char[]或char*,很不直觀,到了C\++的時候多了string這個資料型態,在C++11的時候又有了stringstream,此時要做字串處理變得很方便。 要使用stringstream前要先引用一個標頭檔,#include \<sstream>,stringstream專門拿來讀取字串並且處理。 ## 1. int 轉換成 string ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss; string int_to_str; int num = 12345; ss << num; ss >> int_to_str; cout << int_to_str << endl; return 0; } ``` ## 2. string 轉換成 int ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss; string int_to_str = "11804"; int num; ss << int_to_str; ss >> num; cout << num << endl; return 0; } ``` ## 3. 清除stringstream 如果使用過的stringstream還要繼續使用,必須先清除,如果未清除則會出現無法預測的答案,以下為未清除的時候。 ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss; string int_to_str = "11804"; int num; ss << int_to_str; ss >> num; cout << num << " "; string str = "12345"; ss << str; int a; ss >> a; cout << a ; return 0; } ``` 此時的輸出是:11804 0 但我們希望的結果為11804 12345 所以我們要進行刪除,利用ss.str(""); ss.clear();。 ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss; string int_to_str = "11804"; int num; ss << int_to_str; ss >> num; cout << num << " "; ss.str(""); ss.clear(); string str = "12345"; ss << str; int a; ss >> a; cout << a; return 0; } ``` 此時就可以正常輸出了。 ## 4. 利用stringstream進行基本輸出 ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss1("he"); stringstream ss2,ss3,ss4; string str("max"); ss2.str("hello"); ss3.str(str); ss4 << "hey"; cout << ss1.str() << endl;//output = he cout << ss2.str() << endl;//output = hello cout << ss3.str() << endl;//output = max cout << ss4.str() << endl;//output = hey return 0; } ``` ## 5. 分割stringstream ### 用空格做切割 ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss1("my name is max "); string str(""); while(ss1 >> str) cout << str << endl; return 0; } ``` ### 用getline()把stringstream用特定的string取出 第一個arguement放stringstream,第二個arguement放string,第三個arguement只能放char,不能放string。 ```cpp= #include <iostream> #include <sstream> using namespace std; int main(){ stringstream ss("hello my name is max"); string str; while(getline(ss,str,'m')){ cout << str << endl; } return 0; } ``` output : hello y na e is ax
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.