2011-10-27 9 views
2

Existe-t-il un moyen de convertir une chaîne numérique en char contenant cette valeur? Par exemple, la chaîne "128" doit être convertie en char en maintenant la valeur 128.Chaîne décimale en caractère

+1

Que se passe-t-il si la valeur numérique de la chaîne est '< 0' or '> 255'? –

+0

duplication possible de [Comment analyser une chaîne à un int en C++?] (Http://stackoverflow.com/questions/194465/how-to-parse-a-string-to-an-int-in-c) –

+0

@WTP les chiffres sont dans cette plage. – Sinjuice

Répondre

4

Il y a le style C atoi, mais il convertit à un int. Vous devrez vous lancer à char vous-même.

Pour une solution de style C++ (qui est aussi plus sûr) vous pouvez faire

string input("128"); 
stringstream ss(str); 
int num; 
if((ss >> num).fail()) { 
    // invalid format or other error 
} 

char result = (char)num; 
5

Oui ... atoi de C.

char mychar = (char)atoi("128"); 

A plus C++ approche orientée serait ...

template<class T> 
    T fromString(const std::string& s) 
{ 
    std::istringstream stream (s); 
    T t; 
    stream >> t; 
    return t; 
} 

char mychar = (char)fromString<int>(mycppstring); 
0

Vous pouvez utiliser atoi. Cela vous obtiendra le nombre entier 128. Vous pouvez juste jeter cela à char et vous avez terminé.

char c = (char) atoi("128"); 
1

Cela dépend. Si char est signé et 8 bits, vous ne pouvez pas convertir « 128 » à un char dans la base 10. La valeur positive maximale d'une valeur de 8 bits est signé 127.

C'est une réponse vraiment pédant, mais vous devriez probablement sais cela à un moment donné.

Questions connexes