- 把string作为C风格的const char*来访问通常很有用,实际上string有一个返回cosnt char*的成员函数c_str()就是完成这个任务的
string s1("hello"), s2("world");
strcmp(s1, s2); // 错误
strcmp(s1.c_str(), s2.c_str()); // 正确
- 标准的string不具有也不应该具有向const char*自动转换的能力,隐式转换一般是不安全的,它会影响重载解析且会使错误的代码被偷偷编译通过
- 如果存在string到const char*的自动转换,这个转换动作将会在任何编译器认为需要的地方被调用,这样会造成很多问题
string s1, s2, s3;
s1 = s2 - s3; // 或许本来想要+
- 减法是错误的,但如果存在string到const char*的自动转换,这段代码就可以通过编译
网友评论