J'essaie de créer un code qui utilisera l'intégralité du jeu de caractères ASCII imprimable. Mon problème est que quand il s'agit de caractères qui seront un nombre supérieur à 126, ils s'impriment en '?', À l'exception de 'r', qui s'imprime correctement. Pourquoi mon code permet-il à 'r' de revenir à un caractère imprimable mais pas à des caractères après cela? (Stuvwxyz {|} ~)ROT-13 utilisant l'ensemble des caractères ASCII imprimables C++
"S'il vous plaît entrer votre mot de passe
abcdefghijklmnopqrstuvwxyz. {|} ~
de nopqrstuvwxyz {|}! ~ ????????????"
#include <iostream>
#include <string>
using namespace std;
void encrypt(string password)
{
int count = 0;
char i;
for (count = 0; count < password.length(); count++)
{
i = password.at(count) + 13;
if (i >= 127)
{
i = 32 + (i - 126);
cout << i;
}
else
cout << i;
}
return;
}
int main()
{
string password;
cout << "Please enter your password." << endl;
cin >> password;
encrypt(password);
cout << "\n";
return 0;
}
"Mon problème est que quand il s'agit de caractères qui sera un nombre supérieur à 126, ils impriment comme ' ? ', "- car ces nombres ne font pas partie du jeu de caractères ASCII. –
BTW, si vous utilisiez ** le débogueur **, vous auriez vu la valeur dans 'i' est' -128' pour '" s "', pas '+ 128'. ... la prochaine fois, avant de poster sur SO, essayez d'abord de déboguer. – Ped7g