Intéressant
Je n'étais pas du tout au courant pour ceci :
Citation Envoyé par white_tentacle Voir le message
Je ne suis pas totalement d'accord avec ton "rien". C# définit la locale une fois pour tout le fichier. C++ permet de changer la locale à tout moment sur le flux.

Cette différence d'approche fait que C# peut faire facilement la conversion sur tout son buffer de lecture
Effectivement, j'ai regardé en détail la manière de faire du getline version C# avec MSVC10 et le reflector et ça se passe comme ceci :

Lors du premier getline, un buffer de 1024 octets est lu par la fonction win32 "native" ReadFile, et ce buffer est aussitôt entièrement convertit en unicode.

Les getline suivants ne lance donc en fait pas de nouvelle lecture sur le disque, ils se contentent de trouver le prochain \n dans ce buffer et de renvoyer une copie de la ligne. Dès qu'on dépasse les 1024 octets, une lecture avec ReadFile est relancé, etc.

Pour la STL de MSVC10, j'ai *tenté* de regardé plus en détails, mais le code C++ est devenu si compliqué que je ne suis pas encore certain d'avoir tout compris .