可以用cout打印,但不能创建具有相同对象的新字符串?

时间:2014-11-16 23:04:21

标签: c++ string cout

我是C ++的新手,我遇到了一个脚本直接打印输出的情况,如下所示:

cout << setw(10) << Object->GetAuthor().GetId() << " ";
cout << Object->GetDate() << " ";
cout << Object->GetCaseNumber() << " ";

这在脚本中工作并打印到控制台,现在我想保存字符串而不是打印它以提示但事实是这不是字符串在这个示例中它们可以是int变量或其他东西。 / p>

我不明白为什么cout << Object->GetType() << " ";有效,而string x = Object->GetType()没有。

有没有办法将字符串中的内容保存到控制台?

2 个答案:

答案 0 :(得分:3)

是的,有些流可以打印到字符串。

像这样:

#include <sstream>

// ...

std::ostringstream s;
s << setw(10) << Object->GetAuthor().GetId() << " ";
s << Object->GetDate() << " ";
s << Object->GetCaseNumber() << " ";

std::string result = s.str();

原因

string x = Object->GetType()

不起作用的是Object->GetType()没有返回可以分配给字符串的内容。

<<运算符&#34;知道&#34;如何将许多东西转换为字符串表示(技术术语是重载用于许多不同类型)。

答案 1 :(得分:0)

Cout <<了解可以打印的几种类型,例如intstringbool。如果它不知道如何处理这些对象,它也可以打印对象地址。

这里的问题是字符串不是那么聪明,所以转换可能不起作用。您需要确保GetType返回可以正确转换为字符串的内容