Должно быть что-то очевидное, я не понимаю о C++ с этим.Stange seg fault при использовании + = со строками
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!
...
}
в GDB, когда я "печать" имя файла в начале функции я получаю: (Const строки &) @ 0x9505f08: {статические НСС = 4294967295, _M_dataplus = {> = {< __gnu_cxx :: new_allocator> = {},}, _M_p = 0x950a8e4 "../config/pythonFile.py"}}
Какая черта, как неправильное имя файла, так что .append() работает и + = не делает ?! Что-то странное в перегруженной функции + = в C++?
г ++ версии 3.4.6
Перерыв в оператор + = функция, чтобы увидеть, в какую фактическую строку он врезался. –
Что произойдет, если вы измените порядок вызовов для добавления и + =? Или вы пытались их по одному за раз? –
@harper умирает на + = и никогда не попадает в .append – Alex