Comme le titre l'indique, je suis curieux de savoir s'il existe un moyen de lire une chaîne C++ avec scanf.
Je sais que je peux lire chaque caractère et l'insérer dans la chaîne méritée, mais je voudrais quelque chose comme:
string a;
scanf("%SOMETHING", &a);
gets()
ne fonctionne pas non plus.
Merci d'avance!
Il n'y a aucune situation dans laquelle gets()
doit être utilisée! Il est toujours incorrect d'utiliser gets()
et il est supprimé de C11 et supprimé de C++ 14.
scanf()
ne prend en charge aucune classe C++. Cependant, vous pouvez stocker le résultat de scanf()
dans un std::string
:
std::string str(100, ' ');
if (1 == scanf("%*s", &str[0], str.size())) {
// ...
}
Je ne suis pas tout à fait sûr de la façon de spécifier cette longueur de tampon dans scanf()
et dans quel ordre les paramètres vont (il y a une chance que les paramètres &str[0]
Et str.size()
doit être inversé et il me manque peut-être un .
dans la chaîne de format). Notez que le std::string
Résultant contiendra un caractère nul de fin et il n'aura pas changé sa taille.
Bien sûr, j'utiliserais simplement if (std::cin >> str) { ... }
mais c'est une question différente.
ça peut marcher
char tmp[101];
scanf("%100s", tmp);
string a= tmp;