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上创建的,默认情况下以rn
结束行。在读取文本文件时,c++通常会为您处理行结束符之间的转换,但如果您将文件作为二进制文件读取并使用n
作为分隔符,则会遇到此问题。r
将被视为该行的一部分。
相关文章:
- 如何循环打印顶点结构
- 如何在C++中从两个单独的for循环中添加两个数组
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 正在尝试了解输入验证循环
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- C++指针在 for 循环中被覆盖
- 循环依赖,在继承类的情况下使用覆盖方法
- 循环中的IF-ELSE条件:未来的迭代覆盖以前的迭代结果
- 当循环终止被覆盖时
- for 循环,允许变量相互覆盖
- 向量值被循环中的最后一个值覆盖
- For 循环是覆盖循环计数器
- 在 while 循环中向 std::map 添加一个条目会覆盖上次输入的对
- 我将如何在 c++ 中创建一个实时更新覆盖上一个条目的循环
- c++变量在每次循环迭代期间被覆盖
- pthread循环覆盖指针
- 一个c++协方差/覆盖/循环问题
- 更短的循环,相同的覆盖范围,为什么我在 Visual Studio 2013 的 c++ 中获得更多的“最后一级缓存未命
- C++ 覆盖 For 循环中的输出数字
- c++ cout在for循环中覆盖自身