这是关于 STL 实现在处理std::string
. 我有这么短的测试,它执行 2 个 const 副本并打印由返回的地址c_str()
:
#include <stdio.h>
#include <string>
using namespace std;
int main()
{
string a("Hello World!");
const string b(a);
const string c(b);
printf("a: %p = %s\n", a.c_str(), a.c_str());
printf("b: %p = %s\n", b.c_str(), b.c_str());
printf("c: %p = %s\n", c.c_str(), c.c_str());
return c.c_str() == b.c_str();
}
在我的带有 libstdc++.so.6.0.16 STL 的 gcc 4.6.2 上,所有指针都返回为相等的。
我可以依靠这种行为吗?
它是可移植的还是在最近的标准中定义的?
这是否适用于当前或未来版本的 libstdc++、libc++、Microsoft STL、stdcxx (apache.org)?