J'ai une question sur le comportement standard d'appeler tellp
sur un ostringstream
vide. J'ai une fonction foo qui appelle tellp
la première chose:Comportement standard de tellp sur vide ostringstream
void foo(std::ostream& os)
{
std::ostream::pos_type pos = os.tellp();
// do some stuff.
}
int main()
{
std::ostringstream os;
foo(os);
}
Dans Visual Studio 2005, appelant cette fonction avec un ostringstream
nouvellement créé et vide les résultats dans la variable pos
être définie sur une pos_type
invalide, ce qui dans Visual Studio 2005 est défini sur pos_type(_BADOFF)
.
ofstream
n'a pas le même comportement, où tellp
renvoie pos_type(0)
, ce qui correspond à pos_type
valide.
Est-ce le comportement conforme standard? Ce comportement est-il cohérent avec les autres compilateurs?
Dans les blocs de code IDE, pos est mis à 0 où comme dans MSVC++ 6.0 IDE c'est -1 – CppLearner