Aujourd'hui, j'ai découvert que les compiles et les impressions suivantes: 42Lire char * à partir de flux - un autre fiasco de débordement de tampon?
#include <iostream>
#include <sstream>
int main()
{
std::stringstream s;
s << 42;
char c[8];
s >> c;
std::cout << c;
}
Mais ceci est une attaque de débordement de tampon potentiel, non? Si nous lisons à partir du flux fourni par l'utilisateur, nous ne pouvons pas facilement connaître la taille des données et ne pouvons donc pas allouer suffisamment de stockage. std::gets
a été retiré, peut-être que cela devrait être aussi?
Peut-être que dans le cadre de https://stackoverflow.com/questions/3203452/how-to-read-entire-stream-into-a-stdstring? – lz96
Cela montre la bonne façon de faire cela, ma question est plus sur pourquoi C++ permet de me tirer dans le pied si facilement. – Lyberta
@ M.M 'fgets' a un paramètre de taille, celui-ci ne le fait pas. – Lyberta