2008-12-10 53 views
0

我暫時使用gcc 2.95.2,而不是使用sstream標題,它定義了一個(略有不同且不贊成的)strstream。目前我得到解決此與如何處理來自舊編譯器的sstream與strstream不一致問題

#if __GNUC__ < 3  // or whatever version number it changes 
#include <strstream> 
#else 
#include <sstream> 
#endif 

再之類的東西:

#if __GNUC__ < 3 
    strstream str; 
    str << "Hello World"; 
#else 
    stringstream str("Hello World"); 
#endif 

,但它變得真的很煩人。我只想確保當我切換回更新的gcc(或其他編譯器)時,我不必重寫這些段落。有什麼想法嗎?

回答

2

創建mystream.h作爲

#ifndef mystream 

#if __GNUC__ < 3  // or whatever version number it changes 
#include <strstream> 
#define mystream(x,y) strstream x; x << y; 
#else 
#include <sstream> 
#define mystream(x,y) sstream x(y); 
#endif 

#endif 

然後使用mystream.h頭和mystream類型代替。

如果你真的想讓它看起來像現代流,你可以手動創建一個新類(藉助更新的std C++庫源代碼或手動創建一個使用strstream作爲底層工作方式的代理類) 。

+0

我想過這個,但我真的希望代碼基本上看起來像現代的stringstream,並且有一些小的語法差異。 – 2008-12-10 18:43:59