[英]C++ cout overwriting itself while in for loop
此for循環中的cout語句:
for (vector<Student>::iterator qw = students.begin(); qw != students.end(); ++qw){
Student a = *qw;
name = a.getName();
regno = a.getRegNo();
std::cout << "Name: "<< name << " Reg Number: " << regno << endl;
}
正在創建一些奇怪的行為,cout應該打印的內容是這樣的:
名稱:麥克·桑德森(Mike Sanderson)登記號:10101
但是它實際打印出來的是:
登記號:10101on
在我看來,在cout語句的第二部分之后,它返回到該行的開頭並覆蓋自身,但是為什么呢? 希望你們能幫助我,如果您需要更多信息,請告訴我!
這是回車符的作用(即,字符串文字中的\\r
)。 我假設name
字符串的末尾有一個\\r
。 您需要弄清楚它是如何到達那里並將其刪除的。
我猜想也許您是從文件中讀取名稱的,而該文件是在Windows上創建的,默認情況下,該行以\\r\\n
結尾。 從文本文件讀取時,C ++通常會為您處理行尾之間的轉換,但是如果您將文件讀取為二進制文件並使用\\n
作為定界符,則會遇到此問題。 \\r
將被視為該行的一部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.