[問題] 想問有關 stringstream formatting rule

看板C_and_CPP (C/C++)作者 (....)時間13年前 (2013/01/07 14:04), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC2008express 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) sstream 問題(Question): 這兩天我在看C++ Primer的StringStream章節 看到以下的範例碼(要include <sstream> int val1=512, val2=1024; ostringstream format_message; format_message<<"val1: "<<val1<<"\n" //(A) <<"val2: "<<val2<<"\n"; //(B) istringstream input_istring(format_message.str()); string dump; input_string>>dump>>val1>>dump>>val2; cout<< val1<< " " << val2<<endl; 本來我以為這種字串解析機制是用空白來分解輸入的東西 所以就把AB兩行,"val1: "的字串改成"val1"(沒有空白,沒有冒號)(B行也差不多) 想要混淆電腦的動作(我本來以為電腦會讀到1512和21024) 變成差不多這樣的碼 #include <iostream> #include <sstream> using namespace std; int main() { int val1=512,val2=1024; ostringstream format_message; format_message<<"val1"<<val1 //<<" " <<"val2"<<val2<<" "; istringstream input_istring(format_message.str()); string dump; input_istring>>dump>>val1>>dump>>val2; cout<< val1<<" "<<val2<<endl; getchar(); return 0; } 但是電腦還是讀到512和1024 我想問的是,電腦的字串分割是用甚麼特殊 機制來切的呢? -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.38.224.235

01/07 14:19, , 1F
在讀input之前先塞個垃圾值給val1和val2
01/07 14:19, 1F

01/07 14:19, , 2F
你就會知道答案了XD
01/07 14:19, 2F

01/07 14:46, , 3F
format reading 失敗應該會 roll back
01/07 14:46, 3F

01/08 15:08, , 4F
謝謝!我知道是我耍笨了..
01/08 15:08, 4F
文章代碼(AID): #1GwcLjsj (C_and_CPP)
文章代碼(AID): #1GwcLjsj (C_and_CPP)