iT邦幫忙

0

[已解決] C++ 切割字串遇到理解不了的程式碼

  • 分享至 

  • xImage

各位前輩好!
最近在做關於 C++ 分割字串的一道題目時,上網查到字串分割需要用到getline, stringstream,但是有兩行程式碼,不太知道是什麼意思,所以上來詢問各位前輩。
以下是不懂的地方 謝謝!!/images/emoticon/emoticon41.gif

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;
    }  	
} 
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

1
海綿寶寶
iT邦大神 1 級 ‧ 2021-12-25 09:50:21
最佳解答

請參考這篇
應該可以回答你的問題

裡面有個不同的寫法(效果相同)
可以參考這篇

就是

stringstream X(Str);

stringstream X;
X << Str;

另外囉嗦一句

stringstream 是用來做int與String類別的之間轉換的橋樑。

string 你很清楚;cin 你也很清楚
stringstream 就是「把字串送進 stream 來使用」
重點是在 stream
跟 stringstream 類似的概念有
iostream「標準」stream
fstream「檔案」stream

我想你應該不會認為
「cin(iostream) 是用來做 X 與 Y 類別的之間轉換的橋樑」吧

看更多先前的回應...收起先前的回應...
Chris iT邦新手 4 級 ‧ 2022-01-16 12:38:36 檢舉

謝謝前輩!!

Chris iT邦新手 4 級 ‧ 2022-01-16 12:50:11 檢舉

那想再問一下前輩

stringstream X(Str);

這行的意思,是因為字串輸入會存在字元或是整數,所以需要把字串送進 stream 來使用,才能進行切割字串嗎?
謝謝前輩!

你的程式只有一個目的「分割字串」
分割字串可以有另外兩種寫法

是因為字串輸入會存在字元或是整數,所以需要把字串送進 stream 來使用,才能進行切割字串嗎?

只是「用 stream 來切割字串」
不是「因為字串輸入...所以...」

Chris iT邦新手 4 級 ‧ 2022-01-16 23:14:49 檢舉

原來如此 我懂了 謝謝前輩!!

我要發表回答

立即登入回答