什麼兩碼的差異吹:左操作數的類型 '的std :: stringstream的(__cdecl *)(的std :: string)'
char buf[2048];
stringstream in(string(buf));
int tmpInt;
while ((in >> tmpInt)) { // wrong, error C2296: '>>' : illegal, left operand has type 'std::stringstream (__cdecl *)(std::string)'
}
和
char buf[2048];
string tmpStr(buf);
stringstream in(tmpStr);
while ((in >> tmpInt)) { // right
}
我覺得他們做的同樣的事情:都使用字符串來構造一個stringstream對象。無論臨時對象或一個真正的對象,我們將調用stringstream的字符串拷貝構造函數(只複製BUF內容)
IDE:vs2010
那麼,究竟這兩種方式有什麼不同?或者stringstream實現方式。
謝謝。
這是最讓人頭疼的解析。 – chris