ne peut pas convertir 'std :: basic_string & lt; char & gt;' à 'const char *' pour l'argument '1' à 'int system (const char *)'
J'obtiens cette erreur: "invalid des opérandes de types de 'const char*' et de 'const char [6] "binaire" opérateur+'" quand j'essaie de compiler mon script. Ici devrait être l'erreur:
string name = "john";
system(" quickscan.exe resolution 300 selectscanner jpg showui showprogress filename '"+name+".jpg'");
source d'informationauteur Giacomo Cerquone
Vous devez vous connecter pour publier un commentaire.
Le type de l'expression
est
std::string
. Cependant la fonction de système de déclarationqu'il accepte un argumnet de type
const char *
Il n'y a pas d'opérateur de conversion qui serait de convertir implicitement un objet de type
std::string
pour objet de typeconst char *
.Néanmoins de classe
std::string
a deux fonctions que faire cette conversion explicite. Ils sontc_str()
etdata()
(le dernier peut être utilisé uniquement avec un compilateur qui prend en charge le C++11)De sorte que vous pouvez écrire
Il n'est pas nécessaire d'utiliser une variable intermédiaire pour l'expression.
std::string + const char*
résultats dans un autrestd::string
.system
ne pas prendre unstd::string
et vous ne peut pas concaténerchar*
's avec la+
de l'opérateur. Si vous souhaitez utiliser le code de cette façon, vous aurez besoin de:Voir std::string operator+(const char*)
Comme toutes les autres réponses montrent, le problème est que l'ajout d'un
std::string
et unconst char*
à l'aide de+
résultats dans unstd::string
tandis quesystem()
s'attend à unconst char*
. Et la solution est d'utiliserc_str()
. Cependant, vous pouvez aussi le faire sans un temporaire:L'ajout d'un littéral de chaîne avec un
std::string
rendements autrestd::string
.system
s'attend à unconst char*
. Vous pouvez utiliserstd::string::c_str()
:La fonction du système nécessite const char *, et votre expression est de type
std::string
. Vous devriez écrire