Scinde une chaîne en un tableau de caractères en C++
Je suis en train d'écrire un programme qui nécessite une chaîne de caractères à être insérés, puis divisé en lettres individuelles. Essentiellement, j'ai besoin d'aide pour trouver un moyen de faire de la "chaîne de caractères" ["s","t","r","i","n","g"]. Les chaînes sont également stockées en utilisant le type de données string au lieu de simplement un tableau de caractères par défaut. J'aimerais continuer dans cette voie et d'éviter de char, mais l'utiliser si nécessaire.
Toute aide serait sympa, merci d'avance.
Avez-vous besoin de faire quelque chose pour les lettres après il est divisé? Qui est, vous devez placer les lettres dans une sorte de structure de données autres que les
C'est une question idiote, une chaîne de caractères est un tableau de caractères.
string
?C'est une question idiote, une chaîne de caractères est un tableau de caractères.
OriginalL'auteur Galileo | 2010-01-29
Vous devez vous connecter pour publier un commentaire.
J'espère que l'explique
Pour l'enregistrement, vous pouvez aussi simplement faire: cout << "bonjour"[1];
Ou cout << 1["bonjour"];
OriginalL'auteur Luca Matteis
En supposant que vous avez déjà la chaîne d'entrée:
Cela remplira le vecteur
v
avec les caractères d'une chaîne.OriginalL'auteur Ryan
Une chaîne de caractères est juste une séquence de sous-jacents (à savoir char pour std::string et wchar_t pour std::wstring).
À cause de cela, vous pouvez facilement obtenir à chaque lettre:
int
ou, encore mieux,size_t
fonctionnera sur toutes les plates-formes existantes et de plus, c'est plus clair.OriginalL'auteur R Samuel Klatchko
Essayez d'utiliser le
c_str()
méthode destd::string
:George, sizeof(char) est toujours 1.
Pas vrai! sizeof(char) n'est pas toujours 1. J'ai travaillé avec une puce DSP où tout a été au moins 32 bits, char, short, int -- sizeof(char) == sizeof(short) == sizeof(int). La norme C juste dit que sizeof(char) <= sizeof(short) <= sizeof(int), mais ne nécessite pas de sizeof(char) == 1. L'un des effets secondaires est que la conversion en char et de l'OCTET de limiter les valeurs de 8 bits a eu aucun effet car le type de données natif de 32 bits. Accordé ce fut une architecture peu commune, mais la norme n'a absolument pas dire sizeof(char) == 1.
Non, @Ryan, je suis désolé mais vous vous trompez. La Section 5.3.3 "Sizeof": le "sizeof(char), sizeof(char signé) et sizeof(unsigned char) sont de 1". Un char est un octet, mais il n'est ni nécessairement un octet (8 bits). C'est la même chose avec C. C'est à partir de la n3000 projet de C++0x, mais c'est comme ça depuis des siècles.
Ah, je suis corrigé. Mon point était de faire pas supposons 1 == 8 bits qui vous clairement état. La chose intéressante à propos de la puce DSP a 1 == sizeof(char) == sizeof(short) == sizeof(int) qui m'a surpris quand j'ai découvert ça, où 1 == 32 bits.
OriginalL'auteur Thomas Matthews