错误C3867'std :: basic_string <char,std :: char_traits <char>,std :: allocator <char>&gt; :: c_str':非标准语法;使用'&amp;'创建指向成员的指针

时间:2016-04-10 22:36:20

标签: c++ string pointers

我有这段代码, 我不明白为什么显示这个错误?

string messege = "aaa";
char tmp[50];
strcpy_s(tmp, messege.length(), messege.c_str);
char* s = NULL;
s = &(tmp[0]);

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

在这一行中,您在调用c_str后忘记了括号:

strcpy_s(tmp, messege.length(), messege.c_str);

添加缺少的括号应该解决这个问题。

也就是说,想要以这种方式混合C风格和C ++风格的字符串是不寻常的。您可能想要考虑一下您所做的事情是否合适。

答案 1 :(得分:0)

c_strstd::string的成员函数,因此您需要使用()

进行调用
strcpy_s(tmp, messege.length(), messege.c_str());

这将解决您的问题。