【发布时间】:2016-04-10 22:36:19
【问题描述】:
我有这段代码, 我不明白为什么它会显示此错误?
string messege = "aaa";
char tmp[50];
strcpy_s(tmp, messege.length(), messege.c_str);
char* s = NULL;
s = &(tmp[0]);
有人可以帮忙吗?
【问题讨论】:
-
错误在哪一行?这就是您应该重点开展初步调查的地方。
我有这段代码, 我不明白为什么它会显示此错误?
string messege = "aaa";
char tmp[50];
strcpy_s(tmp, messege.length(), messege.c_str);
char* s = NULL;
s = &(tmp[0]);
有人可以帮忙吗?
【问题讨论】:
在这一行中,您忘记了调用 c_str 后的括号:
strcpy_s(tmp, messege.length(), messege.c_str);
添加缺少的括号应该可以解决此问题。
也就是说,以这种方式混合 C 风格和 C++ 风格的字符串是不寻常的。您可能需要考虑您所做的是否合适。
【讨论】:
c_str是std::string的成员函数,所以需要用()调用
strcpy_s(tmp, messege.length(), messege.c_str());
这将解决您的问题。
【讨论】: