gpt4 book ai didi

C++ cout在for循环中覆盖自身

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:07:24 26 4
gpt4 key购买 nike

这个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 应该打印的是这样的:

Name: Mike Sanderson Reg Number: 10101

不管它实际打印出来的是什么:

Reg Number: 10101on

在我看来,在 cout 语句的第二部分之后,它会回到行首并覆盖自身,但为什么呢?希望你们能帮助我,如果您需要更多信息,请告诉我!

最佳答案

这就是回车符的作用(即字符串文字中的 \r)。我假设 name 字符串的末尾有一个 \r。您需要弄清楚它是如何到达那里并将其删除的。

我猜你可能从文件中读取了名称,而该文件是在 Windows 上创建的,默认情况下以 \r\n 结束行。从文本文件读取时,C++ 通常会为您处理行尾之间的转换,但如果您将文件作为二进制文件读取并使用 \n 作为分隔符,您将拥有这个问题。 \r 将被视为行的一部分。

关于C++ cout在for循环中覆盖自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14295420/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com