由于我未能编译以下程序,我想知道是否:
CharT* std::string::data()
; 根据the documentation of std::string::data()
on cppreference,自C ++ 17起,此函数可以返回一个非常量指针,指向底层数组作为字符存储。
#include <string>
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();
~~~~~~~~~~^~
答案 0 :(得分:10)
根据the libstdc++ documentation,你正在寻找的功能是在libstdc ++版本7中实现的。它被列为给'std :: string'一个非const'.data()'成员函数,提案P0272R1。
同样,the libc++ documentation列出了与libc ++版本3.9中实现的相同的提议。