Comment obtenir les deux premiers caractères d'une chaîne et d'utiliser les deux caractères dans une autre chaîne
Je voudrais obtenir les deux premiers caractères de ma chaîne. Disons que ma chaîne dbdir = "Dir"
et mon autre chaîne test = "20122"
. Je veux obtenir les deux premiers caractères de test et de le combiner avec dbdir chaîne. De sorte que le résultat serait à la chaîne combiné = Dir20 puis-je utiliser le combiné chaîne dans une autre chaîne de caractères d'un fichier.
Voici mon code
std::string dbdir = "Dir";
std::string test = "20122";
//strip first two chars from test//
std::string result_of_test_strip = ;
std::string combined = ""+ dbdir + result +"";
CString fileToOpen = "\"\\\\CAR\\VOL1\\Docs\\PRE\\\" + result_of_test_strip.c_str() + "\\" + filenum.c_str() + ".prt" + "\"";
Réponse @therainmaker
std::string dbdir = "Dir";
std::string test = "20122";
std::string result = test.substr(0, 2);
std::string combined = dbdir + result;
CString fileToOpen = "\"\\\\CAR\\VOL1\\Docs\\PRE\\\" + combined.c_str() + "\\" + filenum.c_str() + ".prt" + "\"";
J'ai cette erreur dans CString fileToOpen --->
erreur C2110: impossible d'ajouter deux pointeurs Erreur lors de l'exécution cl.exe.
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
substr
fonction d'extraire une partie d'une chaîne.Dans votre cas, afin d'extraire les deux premiers caractères, vous pouvez écrire
Une autre méthode pour les deux premiers caractères peuvent être
Aussi, dans votre
string_combined
ligne, vous n'avez pas besoin d'ajouter une chaîne vide""
au début et à la fin. La ligne suivante fonctionnera aussi bien:L'erreur que vous avez actuellement est à partir de cette ligne:
...parce qu'il essaie d'ajouter des pointeurs. Le littéral de chaîne renvoie un pointeur vers le début du stockage pour le littéral. De même,
combined.c_str()
renvoie un pointeur vers l'espace de stockage utilisé pour son contenu. L'ajout de ces pointeurs ensemble ne fonctionne pas (et, bien sûr, vous avez plus de la même dans tout le reste de l'expression).Que vous voulez généralement à faire la manipulation sur
std::string
objets, puis, quand vous avez fait toutes les manipulations, vous pouvez créer leCString
du résultat. (Sinon, vous pouvez utiliserCString
s tout au long, environ, de manière équivalente, en supposant que vous êtes à l'aide de MFCCString
). De toute façon, vous voulez éviter d'essayer de faire beaucoup de manipulation sur des pointeurs.Étant donné le nombre de back-slash vous avez ici, vous pourriez envisager d'utiliser des chaînes brutes pour au moins l'une des principales littérale. Je voudrais aussi mettre dans un
std::string
avant de faire la manipulation:Puis la création de la chaîne concaténée devrait ressembler à quelque chose comme ceci: