簡體   English   中英

C ++ cout在for循環中覆蓋自身

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM