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