comment vérifier si cin est vide


Réponse 1:

Pour une chaîne vide, vous avez besoin du

Caractère nul

, ou '\ 0' (zéro, pas l'alphabet 'O'). C'est un caractère réservé spécial qui signifie la fin d'une chaîne.

Comme une chaîne "bonjour" est en réalité stockée comme "bonjour \ 0". Cela indique où la chaîne se termine.

Ainsi, les chaînes vides (initialisées) seraient données comme "\ 0". Étant donné que la saisie de "\ 0" via le terminal formerait une chaîne comme

str [0] = '\' str [1] = '0'

vous avez besoin d'un autre moyen de le faire en tant que caractère nul.

Ainsi, la possibilité de le saisir (en cas d'entrée utilisateur non vérifiée) crée une vulnérabilité connue sous le nom d'injection d'octets nuls et peut conduire à des exploits de sécurité.

Source: Wikipédia

Caractère nul

Certains claviers ont cette fonctionnalité (ctrl + @), d'autres non.

Sinon, vous devrez créer votre propre mot-clé à saisir, comme "nullstr", puis vérifier si votre entrée est la même, puis changer la chaîne en "\ 0" via votre code.

Mise à jour: j'ai oublié que nous étions en C ++. Oui, comme indiqué par Alok Mishra et Shivshankar Shejwal, getline fonctionnera. mettre \ 0 en C ++ entraînera simplement l'affichage de la chaîne comme "ello" pour "\ 0ello \ 0" puisque la longueur de la chaîne est également stockée.


Réponse 2:

Vous avez entendu parler de getline?

Découvrez ce lien

getline (string) - Référence C ++

Vous pouvez également écrire votre propre fonction en utilisant getchar pour lire chaque caractère d'entrée, construire une chaîne et la renvoyer. Si l'utilisateur saisit directement «Entrée», cette fonction renverra une chaîne vide.


Réponse 3:
#comprendre #comprendre en utilisant l'espace de noms std;int main(){ string s; getline (cin, s); cout < return 0;}