各位前輩好!
最近在做關於 C++ 分割字串的一道題目時,上網查到字串分割需要用到getline, stringstream,但是有兩行程式碼,不太知道是什麼意思,所以上來詢問各位前輩。
以下是不懂的地方 謝謝!!
stringstream X(Str);
知道stringstream 是用來做int與String類別的之間轉換的橋樑。
我在爬文看到的程式碼通常都是把 stringstream 當作一個橋梁去轉換,但是不知道這行程式碼是表達什麼意思。
另外,想問一下stringstream算是一種變數型態嗎?
while (getline(X, T, ' ')) {
Calculation += T;
}
這行程是碼我爬完文的理解是為 getline(X = 來源位置, T = 存入位置, ' ' = 分割的條件)
對於後面兩個部分沒有甚麼問題,想問的是對於 X 那部份我的理解是對的嗎?
附上完整程式碼
#include <iostream>
#include <sstream>
#include <string.h>
using namespace std;
int main () {
string Str, T; // Str = 輸入進來的運算式 T = 存放分割空格後的字串
string Calculation; // 存放去掉空格的運算式
getline(cin, Str); // 輸入字元或變數,包含空格一起輸入
stringstream X(Str);
while (getline(X, T, ' ')) { // getline(X = 來源位置, T = 存入位置, ' ' = 分割的條件)
Calculation += T;
}
}
請參考這篇
應該可以回答你的問題
裡面有個不同的寫法(效果相同)
可以參考這篇
就是
stringstream X(Str);
和
stringstream X;
X << Str;
另外囉嗦一句
stringstream 是用來做int與String類別的之間轉換的橋樑。
string 你很清楚;cin 你也很清楚
stringstream 就是「把字串送進 stream 來使用」
重點是在 stream
跟 stringstream 類似的概念有
iostream「標準」stream
fstream「檔案」stream
我想你應該不會認為
「cin(iostream) 是用來做 X 與 Y 類別的之間轉換的橋樑」吧
那想再問一下前輩
stringstream X(Str);
這行的意思,是因為字串輸入會存在字元或是整數,所以需要把字串送進 stream 來使用,才能進行切割字串嗎?
謝謝前輩!
你的程式只有一個目的「分割字串」
分割字串可以有另外兩種寫法
是因為字串輸入會存在字元或是整數,所以需要把字串送進 stream 來使用,才能進行切割字串嗎?
只是「用 stream 來切割字串」
不是「因為字串輸入...所以...」
原來如此 我懂了 謝謝前輩!!