Question

Je lis istream :: get et un doute plane encore. Disons que mon delimiter est en fait le NULL « \ 0 », ce qui se passe dans ce cas? D'après ce que je lis:

If the delimiting character is found, it is not extracted from the input sequence and remains as the next character to be extracted. Use getline if you want this character to be extracted (and discarded). The ending null character that signals the end of a c-string is automatically appended at the end of the content stored in s.

La raison pour laquelle je préférerais « get » sur « readline » est en raison de la capacité d'extraire le flux de caractères dans un « streambuf ».

Était-ce utile?

La solution

Si vous avez quelque chose comme ça, alors delimiter ne se coincer dans le flux d'entrée:

std::string read_str(std::istream & in)
{
        const int size  = 1024;
        char pBuffer[size];
        in.getline(pBuffer, size, '\0');
        return std::string(pBuffer);
}

juste un exemple si vous avez « \ 0 » comme séparateur et les chaînes ne sont pas plus de 1024 octets.

Autres conseils

Je ne » tout à fait de votre problème.

Sur le site msdn, pour la fonction get, il dit:

  

Dans tous les cas, le séparateur est ni extrait du flux, ni retourné par la fonction. La fonction getline, en revanche, des extraits, mais ne stocke pas le delimiter.   Dans tous les cas, le séparateur est ni extrait du flux, ni retourné par la fonction. La fonction getline, en revanche, des extraits, mais ne stocke pas le delimiter.

http://msdn.microsoft.com/ fr-fr / bibliothèque / aa277360 (VS.60) .aspx

Je ne pense pas que vous allez avoir un problème, puisque le site msdn dit que le séparateur est ni extrait du flux, ni retourné vy la fonction.

Ou peut-être que je manque un point ici?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top