将std :: string复制到char *

时间:2013-07-31 05:59:37

标签: c++

我正在尝试将一个std :: string的副本创建为char *。这是我的功能和看到的结果:

void main()
{
std::string test1;
std::cout << "Enter Data1" << std::endl;
std::cin >> test1;
char* test2;
test2 = (char*)test1.c_str();
std::cout << "test1: "<< &test1 << std::endl;
std::cout << "test2: "<< &test2 << std::endl;
}

Enter Data1
Check
test1: 0x7fff81d26900
test2: 0x7fff81d26908

我不确定是否已创建副本或两者都指向同一位置。 如何确认?

1 个答案:

答案 0 :(得分:2)

您只是复制地址并在C ++中使用C强制转换 请改用strdup

char* test2;
test2 = strdup(test1.c_str()); //free it after

   char *test2 = malloc(test1.size());
   strcpy(test2, test1.c_str());