当前位置:  开发笔记 > 编程语言 > 正文

std :: string :: data()不会返回char*

如何解决《std::string::data()不会返回char*》经验,为你挑选了1个好方法。

由于我未能编译以下程序,我想知道是否:

GCC 6.3.0尚未实现C++ 17功能CharT* std::string::data();

我的代码不符合C++ 17.

根据cppreference 的文档std::string::data(),从C++ 17开始,这个函数可以返回一个非const指针,指向作为字符存储底层数组.

#include 

int main() {
    std::string hello("world");
    char* data = hello.data();
    (void) data;
}

编译

g++ --version ; g++ -std=c++17 -O2 -Wall -Werror main.cpp

产量

g++ (GCC) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

main.cpp: In function 'int main()':
main.cpp:6:28: error: invalid conversion from 'const char*' to 'char*' [-fpermissive]
     char* data = hello.data();
                  ~~~~~~~~~~^~

演示

住在coliru



1> You..:

根据libstdc ++文档,您正在寻找的功能是在libstdc ++版本7中实现的.它被列为Give'std :: string'非const'.data ()'成员函数,提案P0272R1.

同样,libc ++文档列出了与libc ++版本3.9中实现的相同的提议.


@SergeyA:如果你觉得这个问题很糟糕,那么就把问题投下来吧.
@GillBates等等,是的,这是勺子喂养,是的,答案可以通过'gcc C++ 17支持状态'查询在几秒钟内查询.是的,我更喜欢堆栈溢出**而不是**变成LMGFY服务,是的,我会行使我的选项,允许我downvote/VTC问题这是一个谷歌查询,是的,我会downvote回答这些问题因为问题出现只听**,因为他们收到答案.
@SergeyA"我做了" - 但问题仍然是积极排名 - 只是因为你没有发现它是一个好问题并不意味着其他人没有.仅仅因为你没有发现问题有用并不意味着你应该低估好答案
@GillBates至少在这个问题上我必须同意SergeyA.问题不大.OP并没有付出任何努力来找到它自己,即使他自己说答案"GCC 6.3.0还没有实现C++ 17功能CharT*std :: string :: data()呢;"_他显然甚至没有尝试搜索它.我仍然不同意低估一个完美的答案.恕我直言:问题应该被关闭为"Offtopic:为什么这个代码不起作用"
推荐阅读
臭小子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有