Я также продублировал этот результат, Windows Vista, Visual Studio 2005 SP2.
Когда я выясню, что, черт возьми, происходит, я обновлю этот пост.
edit : Хорошо, поехали. Проблема (и разные результаты, которые люди получают) от \ r. Что происходит, вы звоните input.getline
и помещаете результат в vecBuffer. Функция getline удаляет \ n, но оставляет \ r на месте.
Затем вы переносите vecBuffer в строковую переменную, но используете функцию gcount из input, что означает, что вы получите один символ слишком много, потому что входная переменная все еще содержит \ n, а vecBuffer - нет.
Результирующий strResult:
- strResult "Test"
[0] 84 'T' char
[1] 101 'e' char
[2] 115 's' char
[3] 116 't' char
[4] 13 '␍' char
[5] 0 char
Таким образом, затем выводится «Test», за которым следует возврат каретки (переводит курсор назад в начало строки), нулевой символ (перезаписывая T) и, наконец, \ n, который правильно ставит курсор на новая строка.
Таким образом, вы должны либо удалить \ r, либо написать функцию, которая получает длину строки непосредственно из vecBuffer, проверяя наличие нулевых символов.