【问题标题】:Error C3867 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str': non-standard syntax; use '&' to create a pointer to member错误 C3867 'std::basic_string<char,std::char_traits<char>,std::allocator<char>>::c_str':非标准语法;使用 '&' 创建指向成员的指针
【发布时间】: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]);

有人可以帮忙吗?

【问题讨论】:

  • 错误在哪一行?这就是您应该重点开展初步调查的地方。

标签: c++ string pointers


【解决方案1】:

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

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

添加缺少的括号应该可以解决此问题。

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

【讨论】:

    【解决方案2】:

    c_strstd::string的成员函数,所以需要用()调用

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

    这将解决您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-10
      相关资源
      最近更新 更多