ostream 不显示 proberly c++
ostream does not display proberly c++
我有一个项目,我在其中使用了人员目录。在我的主 class 中,我调用 cout << myDirectory << endl;显示此目录中人员的完整列表。为此,我覆盖了 Directory Class 和 Person class.
中的 << 运算符
在目录中 class 我出于特定原因使用地图,所以我这样显示每个人:
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 class 中的 << 运算符:
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
知道我做错了什么吗?
这里猜测,因为您没有提供完整的示例来说明问题,但我认为您的姓氏末尾会有一个尾随 'return' 字符。
它输出 "Daniels" 并将光标移回行首,然后用“,Jack”覆盖它,因此输出将是“,Jackls”
Endl 还会清理缓冲区。也许你应该添加 out.flush() 而不是 endl 然后它会起作用吗?只是猜测。
我有一个项目,我在其中使用了人员目录。在我的主 class 中,我调用 cout << myDirectory << endl;显示此目录中人员的完整列表。为此,我覆盖了 Directory Class 和 Person class.
中的 << 运算符在目录中 class 我出于特定原因使用地图,所以我这样显示每个人:
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 class 中的 << 运算符:
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
知道我做错了什么吗?
这里猜测,因为您没有提供完整的示例来说明问题,但我认为您的姓氏末尾会有一个尾随 'return' 字符。
它输出 "Daniels" 并将光标移回行首,然后用“,Jack”覆盖它,因此输出将是“,Jackls”
Endl 还会清理缓冲区。也许你应该添加 out.flush() 而不是 endl 然后它会起作用吗?只是猜测。