Je veux sélectionner les 8 premiers caractères d'une chaîne en C++. À l'heure actuelle, je crée une chaîne temporaire de 8 caractères et la remplis des 8 premiers caractères d'une autre chaîne.
Cependant, si l'autre chaîne ne comporte pas 8 caractères, il me reste des espaces non désirés.
string message = " ";
const char * Word = holder.c_str();
for(int i = 0; i<message.length(); i++)
message[i] = Word[i];
Si Word
est "123456789abc"
, ce code fonctionne correctement et message
contient "12345678"
.
Cependant, si Word
est plus court, quelque chose comme "1234"
, le message finit par être "1234 "
Comment puis-je sélectionner les huit premiers caractères d'une chaîne ou la chaîne entière si elle est inférieure à 8 caractères?
Il suffit d'utiliser std::string::substr
:
std::string str = "123456789abc";
std::string first_eight = str.substr(0, 8);
Il suffit d'appeler resize sur la chaîne.
Si j'ai bien compris vous écrivez
std::string message = holder.substr( 0, 8 );
Si vous devez récupérer des caractères dans un tableau de caractères, vous pouvez écrire par exemple
const char *s = "Some string";
std::string message( s, std::min<size_t>( 8, std::strlen( s ) );
Ou vous pouvez utiliser ceci:
#include <climits>
cin.ignore(numeric_limits<streamsize>::max(), '\n');
Si le max est de 8, ça s'arrête là. Mais vous devez définir
const char * Word = holder.c_str();
à 8. Je crois que vous pourriez le faire en écrivant
const int SIZE = 9;
char * Word = holder.c_str();
Laissez-moi savoir si cela fonctionne.
S'ils touchent un espace à un moment donné, cela ne ferait que lire dans l'espace.