2013-02-27 2 views
3

Я использую зЬй :: GetLine в цикле в то время и печати на выходе с соиЬ, я считаю, что начало моей линии отрезаны, когда я печать:Почему оператор << отключил символы cout?

работает, как ожидалось:

std::string line; 
while(std::getline(csv, line)) { 
std::cout << line << std::endl 
} 

не работает, как ожидалось, порезы первые два символа из моей линии

std::string line; 
while(std::getline(csv, line)) { 
std::cout << line << " " << std::endl 
} 

Я никогда не замечал это поведение раньше, почему это происходит сейчас?

+0

Из приведенного выше примера, откуда вы знаете, что это 'cout', а не то, что' '' на самом деле не хватает ожидаемых символов? – pickypg

+0

Потому что я использовал printf ("% s \ n", line.c_str()); и получил ожидаемую линию. А также текст «», который я добавляю, заменяет начало моей строки, – user2089851

+2

Я думаю, что вы можете напечатать возврат каретки, из-за чего ваш '' '' заменит начало вашей строки. – atoMerz

ответ

0

Это то, что, кажется, происходит:
Символы на он в конце вашей line строки содержат carriage return характер. Если ваша строка была Hello World, ее печать вместе с возвратом каретки заставит курсор вернуться к символу H. Это означает, что когда вы начнете печатать что-либо после этого, он перезапишет вашу старую строку.
Чтобы избежать этого, вы можете распечатать endl прежде всего.

Смежные вопросы