gpt4 book ai didi

c++ - ostream 不显示 proberly c++

转载 作者:行者123 更新时间:2023-11-28 02:10:44 25 4
gpt4 key购买 nike

我有一个项目,我在其中使用了人员目录。在我的主课中,我调用 cout << myDirectory << endl;显示此目录中人员的完整列表。为此,我覆盖了目录类和人员类中的 << 运算符。

在 Directory 类中,我出于特定原因使用 Map,因此我以这种方式显示每个人:

 std::ostream& operator<<(std::ostream& os, const T& myDirectory)
{
typedef map<Person, Location>::const_iterator Iterator;
for(Iterator it=myDirectory.m_directory.begin();it!=myDirectory.m_directory.end;++it){
os<<it->first<<endl;
}
return os;

为此,我还必须以这种方式重载 Person 类中的 << 运算符:

ostream& operator<<(std::ostream& os, const Person& p){
os << p.lastName << "," << p.firstName << endl;
return os;
}

我的问题是显示不正确。逗号在姓氏之前,姓氏和名字和种类合并在一起。例如,如果我的名字是 Jack Daniels,我会在输出中得到这个:

,Jackls

如果我使用 endl;在姓氏和名字之后效果很好。例如:

os << p.lastName << endl;
os << "," << p.firstName << endl;

我得到这个输出:

Daniels
,Jack

知道我做错了什么吗?

最佳答案

在这里猜测,因为您没有提供完整的示例来说明问题,但我认为您的姓氏末尾会有一个尾随的“返回”字符。

它输出“Daniels”并将光标移回行首,然后用“,Jack”覆盖它,因此输出将是“,Jackls”

关于c++ - ostream 不显示 proberly c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35852846/

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