我對空的ostringstream
調用tellp
的標準行爲有疑問。我有一個函數foo它調用tellp
的第一件事:關於空ostringstream上的tellp的標準行爲
void foo(std::ostream& os)
{
std::ostream::pos_type pos = os.tellp();
// do some stuff.
}
int main()
{
std::ostringstream os;
foo(os);
}
在Visual Studio 2005中,呼籲用新創建的空ostringstream
導致pos
變量此功能被設置爲無效pos_type
,這在視覺Studio 2005設置爲pos_type(_BADOFF)
。
ofstream
沒有相同的行爲,其中tellp
回報pos_type(0)
,這是一個有效pos_type
。
這是標準符合行爲嗎?這種行爲是否與其他編譯器一致?
在代碼塊IDE中,pos設置爲0,因爲在MSVC++ 6.0 IDE是-1 – CppLearner 2012-04-20 10:02:04