c++隐式转换:为什么字面字符串要转换为字符串
C++ implicit conversion: Why should literal string convert to string?
示例来自C++ Primer 5th
的第7章。
假设类Sales_data
有这样的构造函数:
Sales_data(const std::string &s): bookNo(s) { }
它有一个公共函数成员:
Sales_data &combine(Sales_data &s){...}
flow is error:(item
是一个Sales_data
实例)
item.combine("9-999-9999");
原因是:只允许一个类类型转换,然而,上面提到的代码有两个用户定义的转换。
- "9-999-9999"到
string
-
string
到Sales_data
为什么要将字符串转换为字符串?9-999-9999
不是string
吗?
"9-999-9999"
不是字符串,它是const char[]
。您可以通过在类中添加一个构造函数来解决这个问题,该构造函数采用const char *
,例如:
Sales_data(const char* s): bookNo(s) { };
如果你有c++ 14的支持,你也可以使用std::string_literal:
item.combine("9-999-9999"s);
相关文章:
- wcstombs_s(),转换字符串的长度
- 使用 CStringW/CStringA 和 CT2W/CT2A 转换字符串有什么区别?
- 无法转换字符串插入函数的参数
- 转换字符串向量:基于先前的值跳过元素
- 从中间器转换字符串不起作用,出了什么问题?
- 失败的证明转换字符串到枚举类
- 如何使用正则表达式和提升转换迭代器标记和转换 c 字符串
- 使用java jni时转换字符串类型
- 如何避免在转换字符串令牌流时重复istringstream构造
- 阿托伊未正确转换字符串
- C++,转换字符串,使连续下划线序列变为单个下划线
- 使用长算术转换字符串
- 转换字符串十进制数时的精度
- 将词法转换字符串提升为双精度
- 使用marshal_as函数转换字符串的性能
- C++不会从数据转换字符串
- 无论如何,在c++ /Qt中转换字符串到结构中的字段
- C++ 隐式类型转换字符串 -> int?
- 转换字符串到浮点数,c++实现
- 用于转换字符串大小写的函数