相关疑难解决方法(0)

使用是否安全(str1 + str2).c_str()?

我测试了这段代码:

#include <iostream>
#include <cstdio>
#include <string>
using namespace std;

int main()
{
    string s1("a"),s2("b");
    const char * s = (s1+s2).c_str();
    printf("%s\n",s);
}
Run Code Online (Sandbox Code Playgroud)

它返回"ab".

据我所知,因为它(s1 +s2)是一个临时对象,可能会以某种方式消失(我不知道),然后const char * s可能指向未定义的内存并可能被转储.

那么使用.c_str()那样安全吗?

c++ string

36
推荐指数
3
解决办法
1546
查看次数

为什么std :: string没有提供到const char*的转换?

这更像是一个政策或历史问题.为什么决定为std :: string提供const char*转换?有人害怕有人可能会做printf("%s",s)并相信它会自动转换吗?关于这个问题有没有公开讨论?

c++ string implicit-conversion

13
推荐指数
3
解决办法
3125
查看次数

标签 统计

c++ ×2

string ×2

implicit-conversion ×1