2015-09-20 221 views
1

我想從一個字符串中「提取」信息。該字符串始終格式爲int int char使用std :: sscanf和std :: string的C++

我花了很長時間在這個上,檢查了「每個」這個網站和谷歌我發現的例子,沒有用。編譯了一些例子,但崩潰了(沒有溢出)。

這裏是目前,它編譯但崩潰。

// Data      
string str = "53 25 S"; 
int num1; 
int num2; 
char type3; 

// Read values         
sscanf(str.c_str(),"%i %i %c",num1,num2,type3); 
+0

(在標準頭<sstream>聲明)是'的std :: istringstream'考慮會更好? –

+0

是的。並有strtok()的考慮,但爲此,我想盡可能簡單。 –

回答

5

任何基本的文本和sscanf()文檔的簡單的閱讀,你可以回答自己的問題。

如果您確實堅持使用sscanf(),則需要傳遞num1,num2num3的地址,而不是其值。

sscanf(str.c_str(),"%i %i %c",&num1,&num2,&type3); 

你會使用stringstream比試圖使用過時的功能,從C

std::istringstream some_stream(str); 
some_stream >> num1 >> num2 >> type3; 
+0

我看了以前的文檔,但現在看,我完全忽略了這個地址。 –

+0

我認爲這裏第一句話中的sn is不必要。對於很多人,包括我自己,StackOverflow在文檔之前在搜索結果中顯示。 – bejado

+0

這種暴躁是有保證的。 OP聲稱努力尋找答案。在大多數介紹性文本中存在相關信息,對SO和其他網站的類似問題提供了許多答案,'sscanf()'的文檔以及大多數關於使用這些功能的教程都與該聲明相矛盾。 – Peter

2

您需要運營商的地址,即

sscanf(str.c_str(),"%i %i %c",&num1,&num2,&type3); 
+0

啊哇,謝謝,現在工作正常,令人驚訝的是,我從來沒有發現任何類似的搜索。 –

相關問題