7
votes

Changer le répertoire actuel sous Linux en utilisant c ++

J'ai le code suivant:

error: cannot convert ‘std::string’ to ‘int’ in initialization


0 commentaires

3 Réponses :


5
votes
if (chdir(sDirectory.c_str()) == -1) {
    // handle the wonderful error by checking errno.
    // you might want to #include <cerrno> to access the errno global variable.
}

0 commentaires

2
votes

Le problème est que vous êtes une chaîne pour transmettre une chaîne stl à CHDIR (). CHDIR () nécessite une chaîne de style C, qui n'est qu'une gamme de caractères terminés avec un octet nul.

Ce que vous devez faire est CHDIR (sdirectory.c_str ()) qui le convertira en une chaîne de style C. Et aussi l'INT sur int CHDIR (sdirectory); n'est pas nécessaire.


1 commentaires

Cela peut être un problème , mais ce n'est pas la question que le compilateur se plaignait. Le compilateur se plaint du fait que sdirectory ne peut pas être utilisé pour initialiser un int appelé CHDIR .



11
votes

int CHDIR (sdirectory); code> n'est pas la syntaxe correcte pour appeler la fonction CHDIR code>. C'est une déclaration d'un INT code> appelé CHDIR code> avec un initialiseur de chaîne non valide (`sdirectory).

Pour appeler la fonction que vous venez de faire: P>

int chdir_return_value = chdir(sDirectory.c_str());


1 commentaires

Merci beaucoup. J'avais mal compris plusieurs choses lors de l'écriture de ce code, mais vous avez effacé ensuite.