字符串流stringstream无法正确接收字符串,而是接收了字符串的地址 -- 永远不要直接用类的成员
来源:互联网 发布:php 查找字符串位置 编辑:程序博客网 时间:2024/05/23 21:00
#include <iostream>
#include <sstream>
using namespace std;
class CTest
{
public :
~CTest()
{
cout << "Clear : " << m_ss.str() << ", size = " << m_ss.str().size() << endl;
}
stringstream & Stream()
{
return m_ss;
}
stringstream m_ss;
};
int main()
{
CTest().Stream() << "hello world !" << endl;
cout << "===========================================" << endl;
CTest().m_ss << "hello world !" << endl;
return 0;
#include <sstream>
using namespace std;
class CTest
{
public :
~CTest()
{
cout << "Clear : " << m_ss.str() << ", size = " << m_ss.str().size() << endl;
}
stringstream & Stream()
{
return m_ss;
}
stringstream m_ss;
};
int main()
{
CTest().Stream() << "hello world !" << endl;
cout << "===========================================" << endl;
CTest().m_ss << "hello world !" << endl;
return 0;
}
通过代码可以看出来,主函数中第一行调用,是利用Stream接口来返回字符串流成员m_ss;而主函数中的第二次调用,是直接调用字符串流成员m_ss。
表面上看没有什么区别,甚至有人认为第一次调用是多此一举,何必多写一个接口?
但是事实上区别是非常大的,第一种才是正确的调用方式,第二次调用是有非常大的风险的,运行结果如下:
当然,在使用C++11的标准来编译的时候,两种写法都没有问题。
0 0
- 字符串流stringstream无法正确接收字符串,而是接收了字符串的地址 -- 永远不要直接用类的成员
- 字符串处理之字符串流的创建
- 字符串流的应用(stringstream\ istringstream ostringstream)
- 数据结构--字符串的接收操作
- C#接收C++动态库返回字符串char*,在C#端如何接收并得到正确的字符串
- 关于scanf()不能正确接收有空格符的字符串的问题
- istringstream字符串流,实现类似字符串截取的功能,字符串流中的put,str()将流转换成为字符串string
- c++中常用字符串流的类库ostringstream、istringstream、stringstream
- java中接收字符串的问题
- 解压socket接收的压缩字符串
- C++接收含有空格的字符串
- 字符串流stringstream
- stringstream 字符串流
- VLC接收网络串流缓冲时间的计算
- VLC接收网络串流缓冲时间的计算
- VLC接收网络串流缓冲时间的计算 (转)
- 将接收到的IP地址转化为字符串显示(代码)
- 从不断更新query日志的字符串流中随机选择一个字符串?10000个字符串呢?
- 剑指offer面试题 斐波那契数列
- 一个很city的问题
- angular js emit vs broadcast
- VS2010添加附加头文件和附加库方法
- Http协议与TCP协议简单理解
- 字符串流stringstream无法正确接收字符串,而是接收了字符串的地址 -- 永远不要直接用类的成员
- 揪出bug!解析调试神经网络的技巧
- Java集合类Map与MapEntry学习
- Emoji表情符号录入MySQL数据库报错的解决方案
- Jquery datePicker 日期联动效果
- 归并算法(java 语言实现)
- MarkDown轻量使用
- SDAU 课程练习3 1002
- 关于GPL329A添加摄像头驱动需要更改的配置脚本