编译标准库类型
Compiling standard library types
我本以为以下代码会产生错误:
#include <iostream>
using namespace std;
#include <map>
#include <string>
int main(){
map<string,string> x;
x["10"]=20;
cout <<x["10"]<<endl;
}
因为分配的值不是字符串类型。但是,没有错误。但是输出不正确——没有打印任何可见的内容。但是,如果我用引号括起20,那么输出就可以了。有人能解释吗
std::string
有三个版本的operator=
(C++03(。其中一个需要一个字符。如果您呈现s = 65;
,它将int作为char,并调用string& operator= (char c);
版本。在这种情况下,std::string
创建单个字符串。
C++03中的3个版本是:
string& operator= (const string& str);
string& operator= (const char* s);
string& operator= (char c);
对于当前的标准,我们有更多的内容,请参阅std::string::operator=
示例:打印出"A",因为65是ASCII中的大写A
。
int main()
{
std::string s;
s = 65;
std::cout << s << std::endl;
}
你的观察结果与地图的结合使用无关,所以我将其简化为std::string
的使用。
相关文章:
- 编译标准库类型
- 铸造标准::有没有回到原来的类型
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- 标准库类型的赋值运算符的引用限定符
- 强枚举类型定义:Clang Bug 还是 C++11 标准不确定性?
- 根据C++标准的定义实现"is_similar"类型特征
- C++ 模板类型检查标准::is_same不起作用?
- 标准::原子中的自定义类型
- 标准::时间::d类型的挥发性对象
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 如何声明一个标准::提升直方图的向量?提升直方图的类型是什么?
- 标准::p空气<自动,自动>返回类型
- 标准::map键类型的严格弱排序概念
- MacOS 上的 LLVM - 标准文件 iosfwd 中未知类型名称'template'
- 标准::enable_if类型检查
- 使用C++11标准的哪些规则来确定({..})中表达式的类型
- 如何为缺少预定义运算符而不扩展命名空间"std"的标准类型定义运算符>> (istream &, ...)?
- POD类型是否完全等同于琐碎的标准布局类型
- 聚合类型是否意味着它也是标准布局
- 将积分类型的数组作为另一个不相关的积分类型的阵列进行访问的安全且符合标准的方法