строка — векторы в C ++ ведут себя по-разному в Windows и Ubuntu

Я должен сравнить две строки, которые хранятся в векторе. Сравнение прекрасно работает в Windows, которая использует компилятор mingw-g ++ (версия 4.4.1).

Но когда я пытаюсь сделать то же самое в Ubuntu под управлением g ++ версии 4.7.2, у меня возникают странные проблемы. Я перечислил их ниже:

  1. Когда я пытаюсь распечатать элементы по отдельности, они дают правильный вывод, и обе строки одинаковы.

  2. Но когда я пытаюсь сравнить их, используя оператор == или strcmp (), он говорит, что они не равны, даже если они одинаковы.

  3. Когда я пытаюсь распечатать элементы, которые сравниваются выше, какая-то строка заменяет значение первой строки. Код приведен ниже. В идеале цикл 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, так как это очень большой код.

0

Решение

Проблема должна быть в:

r1->GetSchema().GetAttrTypes();

Эта функция должна быть в курсе того, как это std::stringсозданы.
Можете ли вы показать нам код?

0

Другие решения

Ну, все было хорошо, кроме файла, из которого я читаю входную строку. Так как я создал этот файл в Windows, его Конец строки отличается (\ r \ n), где, как и в Ubuntu, он (\ n).

В Ubuntu мне пришлось конвертировать текстовый файл, который я читаю, вводить Unix Mode.
После этого все в порядке.

Я не знаю, как я пропустил этот маленький момент.

Спасибо за ваш вклад.

0

По вопросам рекламы [email protected]