Я должен сравнить две строки, которые хранятся в векторе. Сравнение прекрасно работает в Windows, которая использует компилятор mingw-g ++ (версия 4.4.1).
Но когда я пытаюсь сделать то же самое в Ubuntu под управлением g ++ версии 4.7.2, у меня возникают странные проблемы. Я перечислил их ниже:
Когда я пытаюсь распечатать элементы по отдельности, они дают правильный вывод, и обе строки одинаковы.
Но когда я пытаюсь сравнить их, используя оператор == или strcmp (), он говорит, что они не равны, даже если они одинаковы.
Когда я пытаюсь распечатать элементы, которые сравниваются выше, какая-то строка заменяет значение первой строки. Код приведен ниже. В идеале цикл if не должен выполняться, но он все еще выполняется и печатает некоторое значение мусора вместо v1 [i].
vector<string> v1 = r1->GetSchema().GetAttrTypes(); vector<string> v2 = r2->GetSchema().GetAttrTypes(); for(i=0; i<v2.size();i++) if(v1[i] != v2[i]) cout << v1[i] << " " << v2[i] << " awdsd" << endl;
Я не знаю, что искать подобные ошибки. Я беру строки из одного файла и сохраняю их в векторах как в Windows, так и в Ubuntu.
РЕДАКТИРОВАТЬ: Я прилагаю часть кода здесь. Функция справа возвращает вектор строк. Я не могу вставить выше код classe, так как это очень большой код.
Проблема должна быть в:
r1->GetSchema().GetAttrTypes();
Эта функция должна быть в курсе того, как это std::string
созданы.
Можете ли вы показать нам код?
Ну, все было хорошо, кроме файла, из которого я читаю входную строку. Так как я создал этот файл в Windows, его Конец строки отличается (\ r \ n), где, как и в Ubuntu, он (\ n).
В Ubuntu мне пришлось конвертировать текстовый файл, который я читаю, вводить Unix Mode.
После этого все в порядке.
Я не знаю, как я пропустил этот маленький момент.
Спасибо за ваш вклад.