作者easterday (....)
看板C_and_CPP
標題[問題] 想問有關stringstream
時間Mon Jan 7 14:04:26 2013
開發平台(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