У меня плохая пара дней за странное поведение. У меня есть std :: string, в которой я использую оператор + =, чтобы добавить еще одну строку (на самом деле имя файла, добавляемого в путь). Когда я запустил программу, я обнаружил, что файл не был найден. Позже я обнаружил, что в начале строки добавлено имя файла.
std::string path("/home/me/location/");
std::string file("file.txt");
path += file;
std::cout << path.c_str();
Вывод этого файла "file.txt / location" !!! Я пробовал простую программу, которая просто добавляет две строки вместе, и это прекрасно работает, что я ожидал (gcc v 4.3). Я скопировал код с машины с Windows, я не ожидал никаких проблем, кроме новых путей к файлам, он действительно использует только STL и dirent, более того, он компилируется более или менее впервые. Я запустил dos2unix на всякий случай. Теперь я немного озадачен, но я до сих пор не скопировал код, кроме совершенно тривиального, поэтому я мог упустить что-то ослепительно очевидное.