Il doit y avoir quelque chose d'évident que je ne réalise pas à propos de C++ avec celui-ci.Erreur de segmente lors de l'utilisation de + = avec des chaînes
load(string & filename){
string command;
char delimiter = '/';
size_t delimiterPos = filename.rfind(delimiter);
string directory = string(filename.c_str(),delimiterPos);
command = "import path ";
//want to add directory to end of command
string temp = command + "hello!"; // This works
command.append(directory); //This works!
command += directory; //This seg faults!
...
}
dans GDB quand je nom de fichier "d'impression" au début de la fonction I get: (string const &) @ 0x9505f08: {npos statiques = 4294967295, _M_dataplus = {> = {< __gnu_cxx :: new_allocator> = {},}, _M_p = 0x950a8e4 "../config/pythonFile.py"}}
que diable, comment est le nom de fichier formaté correctement, de telle sorte que .append() fonctionne et + = ne pas ?! Quelque chose d'étrange dans la fonction surchargée + = en C++?
g ++ version 3.4.6
Rompre dans l'opérateur + = fonction pour voir sur quelle ligne elle se bloque. –
Que se passe-t-il si vous inversez l'ordre des appels à ajouter et + =? Ou les essayiez-vous un à la fois? –
@harper meurt sur le + = et n'obtient jamais le .append – Alex