Bonjour !
Je cherche un moyen d'associer 2 variables. Je m'explique, j'ai :
a = 1;
b = 3;
et je veux :
c = ab = 13
Je veux qu'avec le nombre 1 et le nombre 3, obtenir le chiffre 13.
Merci de votre aide !
Bonjour !
Je cherche un moyen d'associer 2 variables. Je m'explique, j'ai :
a = 1;
b = 3;
et je veux :
c = ab = 13
Je veux qu'avec le nombre 1 et le nombre 3, obtenir le chiffre 13.
Merci de votre aide !
J'ai oublié de préciser que a, b et c sont des char.
J'ai trouvé un moyen en faisant :
char c[2];
c[0] = a;
c[1] = b;
du coup j’obtiens :
c = 13
Mais ce carré m'embête.
char est un type représentant un caractère, c'est à dire à peu près une lettre.
Attention, toute fois, char est quand même un type entier, la valeur du caractère '1' n'est pas 1. Pour obtenir 1, il faut calculer a-'0';.
"13" ce sont deux lettres qui se suivent. Il faut utiliser un type de séquence de caractères.
Il y en a deux principaux: std::string et std::vector<char>.
On peut imaginer d'autres choses comme std::array<char, 2>, std::list<char>, std::deque<char>.
Voire les peu recommandables et antiques char[2] et char*. Ces derniers ont l'atroce défaut de convenir à la fois à une séquence de taille précise de chars, et à une chaine de caractère façon C, de taille inconnue, mais terminée par une valeur spécifique de char, '\0'.
Cela dit, la "bonne" réponse à ta question dépend non pas de ton besoin immédiat, mais de la raison de ton besoin.
à quoi va te servir la valeur ainsi obtenue?
- A obtenir la valeur correspondante? autant écrire auto c = 10*(a-'0') + (b-'0');.
- A compléter un unique texte? utilise directement le flux concu pour (std::ostringstream ou le std::ostream pris en parametre): stream << a << b.
- A compléter des textes? fais en une string: std::string c({a, b});.
Merci beaucoup pour ta réponse ! Je comprend mieux !
En faite, j'ai un fichier texte avec plusieurs caractères ( @01$02&12{088,6/ ). J'ai besoin de récupérer certains caractères de cette chaîne comme 01, 02 et 088,6.
Pour se faire, j'ai lu le fichier caractère par caractère et j'ai enregistré ceux qu'il me fallait dans des variables :
a = 0
b = 1
c = 0
d = 2
e = 0
f = 8 ...
Le problème est que j'ai besoin d'avoir 01 et pas 0 et 1.
Je précise que toutes les quelques minutes, les nombres de la chaîne changent.
Sont-ce explicitement des nombres que tu dois récupérer?
Si oui, tu peux te servir de la saisie formatée, quelque chose comme ceci:
.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void fonction(std::string const& input) { int a, b; double c; sscanf( input.c_str(), "@%d$%d&%*d{%f/", &a, &b, &c); //utiliser a, b et c }
Bien sûr, dans ton code, les noms des variables seront significatifs.
Regarde la documentation précise des fonctions scanf pour le détail.
Merci je vais regarder tout ça.
J'avais aussi pensé à refaire ce morceau programme en lisant la 1er ligne du fichier texte puis utiliser "substr" pour récupérer les chiffres dont j'ai besoin.
En gros, lire le fichier texte, mettre tout ça dans une chaîne de caractère puis la découper.
J'ai fini par utiliser "substr" et tout fonctionne très bien ! Merci pour votre aide qui m'a beaucoup éclairé !
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager