Неожиданный cout << из строки * при добавлении запятой - PullRequest
0 голосов
/ 13 февраля 2012

У меня возникла интересная ошибка при переходе к компиляции g ++ в RedHat после использования Visual Studio ранее.

У меня есть цикл, который выглядит следующим образом:

for(unsigned int i = 0; i < data.size(); i ++){

    for(int j = 0; j < data[i]->size; j++){

        cout << data[i]->columns[j]<< ',';
    }

    cout << endl;

}

, где данные[i] -> columns является строкой *, и целью является разделить вывод запятыми.Раньше это работало, однако сегодня мой вывод выглядит примерно так:

,ata, two, three, four
,ata2, two, three, four
,ata3, two, three, four

Принимая во внимание, что если я немного изменю код на: cout << datai [i] -> columns [j] << endl;</p>

Я получаю:

data
two
three
four

data2
two
three
four

Что может вызывать совпадение этих символов с запятыми?Это не происходило на компиляторе визуальной студии.

Ответы [ 2 ]

4 голосов
/ 13 февраля 2012

Похоже, что последняя запись в каждой строке имеет \ r и / или \ n.

Итак, на четыре вы получите "fourBREAK,"

Ваш конечный вывод, кажется, подтверждает это, так какВы получаете 2 разрыва строки после четырех.

2 голосов
/ 13 февраля 2012

Ваш входной файл (который вы прочитали при заполнении data) в текстовом формате MS-DOS.Либо используйте dos2unix, либо аналогичную утилиту, либо игнорируйте \r при вводе.

...