这个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;
}
Run Code Online (Sandbox Code Playgroud)
创造一些奇怪的行为,cout应该打印的是这样的:
姓名:Mike Sanderson Reg编号:10101
然而它实际打印出来的是:
注册号码:10101on
在我看来,在cout语句的第二部分后,它将回到行的开头并覆盖自身,但为什么呢?希望你们能帮助我,如果你需要更多信息,请告诉我!
Jos*_*eld 17
这是回车符所做的(即\r字符串文字).我假设name字符串有一个\r结尾.你需要弄清楚它是如何到达并将其删除的.
我猜你也许你从一个文件中读取了这些名字,而那个文件是在Windows上创建的\r\n,默认情况下它会以行结束.在从文本文件中读取时,C++通常会处理行结尾之间的转换,但如果您将文件作为二进制文件读取并\n用作分隔符,则会遇到此问题.该\r会读,就好像是该行的一部分.