J'essaie de comprendre comment inverser la chaîne de caractères temp
lorsque la chaîne est lue en nombres binaires
istream& operator >>(istream& dat1d, binary& b1)
{
string temp;
dat1d >> temp;
}
J'essaie de comprendre comment inverser la chaîne de caractères temp
lorsque la chaîne est lue en nombres binaires
istream& operator >>(istream& dat1d, binary& b1)
{
string temp;
dat1d >> temp;
}
Je ne sais pas ce que vous entendez par une chaîne de caractères contenant des nombres binaires. Mais pour inverser une chaîne (ou tout autre conteneur compatible STL), vous pouvez utiliser std::reverse()
. std::reverse()
fonctionne à la place, il peut donc être utile de faire d'abord une copie de la chaîne :
#include <algorithm>
#include <iostream>
#include <string>
int main()
{
std::string foo("foo");
std::string copy(foo);
std::cout << foo << '\n' << copy << '\n';
std::reverse(copy.begin(), copy.end());
std::cout << foo << '\n' << copy << '\n';
}
Essayer
string reversed(temp.rbegin(), temp.rend());
EDITAR : Élaborer comme demandé.
string::rbegin()
y string::rend()
qui signifient respectivement "début inversé" et "fin inversée", renvoient itérateurs inversés dans la chaîne. Il s'agit d'objets supportant l'interface standard des itérateurs ( operator*
pour déréférencer un élément, c'est-à-dire un caractère de la chaîne, et operator++
pour passer à l'élément "suivant"), de telle sorte que rbegin()
pointe sur le dernier caractère de la chaîne, rend()
pointe sur le premier, et le fait d'avancer l'itérateur le déplace vers l'élément précédent (c'est ce qui en fait un itérateur inversé).
Enfin, le constructeur auquel nous passons ces itérateurs est un constructeur de chaîne de caractères de la forme :
template <typename Iterator>
string(Iterator first, Iterator last);
qui accepte une paire d'itérateurs de n'importe quel type représentant une plage de caractères, et initialise la chaîne à cette plage de caractères.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.