看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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
AstralBrain:在讀input之前先塞個垃圾值給val1和val2 01/07 14:19
AstralBrain:你就會知道答案了XD 01/07 14:19
legnaleurc:format reading 失敗應該會 roll back 01/07 14:46
easterday:謝謝!我知道是我耍笨了.. 01/08 15:08