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

can print with cout but can't create new string with same object?

本文关键字:对象 创建 字符串 打印 cout 但不能 可以使      更新时间:2023-10-16

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

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

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

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

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

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

喜欢这个:

#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()不返回可以分配给字符串的内容。

<<运算符"知道"如何将许多东西转换为字符串表示形式(技术术语是它对许多不同的类型进行了重载)。

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

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