返回列表 發帖

字串串流 (三)

將字串 "123 42 13 56 8 67 7" 以空白劈開後,垂直打印出來。
  1. #include<iostream>
  2. #include<cstdlib>
  3. #include<sstream>
  4. using namespace std;
  5. int main()
  6. {
  7.     string str="123 42 13 56 8 67 7";
  8.     stringstream ss;
  9.     ss<<str;
  10.     int n;
  11.     while(ss>>n)
  12.         cout<<n<<endl;
  13.     return 0;
  14. }
複製代碼

本帖最後由 陳曜誌 於 2024-8-8 19:03 編輯

在 C++ 中,stringstream 的 >> 操作符會自動將空白字符(包括空格、制表符和換行符)視為分隔符,並停止讀取當前的數字,並準備讀取下一個數字。

因此,當你使用 ss >> n 時 stringstream會從字符串中讀取數字,並在遇到空白字符時自動停止,這樣就能夠將字符串中的數字一個個提取出來。

字符串結束:當到達字符串的結尾(即沒有更多字符可讀取)時,讀取操作會結束。

遇到非數字字符:如果在預期讀取數字的地方遇到非數字字符(例如字母或符號),則讀取會停止,並且不會將這些字符轉換為數字。

TOP

  1. #include<iostream>
  2. #include<string>
  3. #include<algorithm>
  4. #include<sstream>
  5. using namespace std;
  6. int main()
  7. {
  8.     string str="123 42 13 56 8 67 7";
  9.     stringstream ss;
  10.     ss<<str;
  11.     int n;
  12.     while(ss>>n)
  13.     {
  14.         cout<<n<<endl;
  15.     }
  16. }
複製代碼

TOP

返回列表