Intéressant
Je n'étais pas du tout au courant pour ceci :
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 .
Partager