Question

J'obtiendrai une chaîne de numéros qui ressemble à ceci.

12 45

Deux entiers se sont séparés avec l'espace.

La sortie sera de 57.

J'ai essayé d'utiliser,

string numbersstream;
cin >> numbersstream;
istringstram twonumbers (numbersstream);
twonumbers >> a >> b;

Mais chaque fois que je l'exécute, seul A est correct, B ne l'est pas.

Quelles autres fonctions y a-t-il pour m'aider? Ou est-ce juste un problème de codage que j'ai?

J'ai déjà eu deux types de suggestions dans les réponses.

getline(cin,numbersstream);

Et

cin << a << b;

Merci à tous pour votre temps. Des méthodes supplémentaires seront très appréciées.

Était-ce utile?

La solution

Le problème est avec votre contribution de CIN. Utilisant operator>> est délimité dans l'espace. Donc, si l'utilisateur tape "12 45", seuls les 12 seront extraits. Vous pouvez utiliser Getline à la place:

getline(cin,numbersstream);

Autres conseils

Essaye ça:

int main()
{
    int a;
    int b;

    std::cin >> a >> b;
    std::cout << a+b << "\n";
}

Le problème est que dans votre code:

cin >> numbersstream;

Ne lit un seul mot séparé de l'espace (c'est-à-dire 12) dans la chaîne numbersstream. Ainsi, lorsque vous construisez twonumbers Il n'a en fait qu'un seul numéro. Par conséquent, il ne fait que «A» et «B» n'est pas défini.

Vous pouvez le faire à votre façon, mais ce dont vous avez vraiment besoin ici, c'est de lire toute la ligne dans la chaîne:

std::getline(std::cin, numbersstream);
istringstram twonumbers (numbersstream);

Vous ne lisez que jusqu'à ce que le premier personnage blanc

cin >> numberstream;

Les éléments suivants liront tout dans la chaîne jusqu'à ce qu'un caractère délimiteur soit lu (' n') ou de fin de fichier. Le délimiteur est jeté.

getline(cin,numbersstream);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top