繁体   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