可以使用 cout 打印,但不能使用相同的对象创建新字符串?
can print with cout but can't create new string with same object?
我是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 <<
知道它可以打印的几种类型,例如int
、string
和bool
。如果它不知道如何处理对象地址,它也可以打印这些对象地址。
这里的问题是字符串不是那么聪明,所以转换可能不起作用。您需要确保GetType
返回可以正确转换为字符串的内容
相关文章:
- 如何为模板化对象创建模板向量?VS正在投掷C3203
- 具有包含其他对象的类的对象创建顺序
- 为什么我们再次从结构对象创建结构变量?
- 将对象创建为全局/静态对象会崩溃,而本地对象不会崩溃
- 如何创建一个对象创建函数,该函数将由与其关联的名称调用?
- 如何为自定义模板对象创建专门的函数模板
- 对象创建错误的C++矢量
- 如何为Python Swigged C++对象创建和分配回调函数
- 在 C++ 中为 C 样式对象创建一个透明包装类
- 此类模板的对象创建如何工作?
- C++ 中的对象创建类型有什么区别?
- 未知大小的数组作为类成员,用于在运行时(对象创建时间)创建数组的对象
- 如何仅通过父类对象限制对象创建
- 在正确性或良好的代码结构方面,这种动态对象创建看起来如何
- 无法将类对象创建为另一个类的成员
- 如何从现有基类对象创建派生类对象
- 在 DTor 之前删除的静态对象创建的线程?
- C++:定义多个构造函数时的对象创建/销毁序列
- 从对象创建矢量包装器,该对象只允许使用索引访问向量
- 是否可以为CPP中的对象创建一组指针