我试图将std::string
转换为c字符串(我的实际问题更接近this;我正在尝试解决方法)。
std::string
存储为字符数组?为什么std :: string.data()和std :: string.c_str()会返回char [(<anonymous> + 1)]
而不是预期的const char*
?或者我是否混淆了这些,如果是这样,我如何使用这些类型?
#include <string>
#include <iostream>
int main()
{
std::string sstring = "I'm an std string!";
char cstring[sstring.size()];
cstring = sstring.c_str();
std::cout << std::string(sstring.c_str());
return 0;
}
编译结果
scratch.cpp:10:11: error: incompatible types in assignment of ‘const char*’ to ‘char [(<anonymous> + 1)]’
我无法找到相关的,已存在的问题。
答案 0 :(得分:3)
只需使用const char *
std::string sstring = "I'm an std string!";
const char * cstring = sstring.c_str();
std::cout << cstring << std::endl;
答案 1 :(得分:1)
正如评论中所提到的,这听起来就像一个XY问题。但是如果你只是想复制字符串,你可以这样做:
char cstring[sstring.size() + 1];
strcpy(cstring, sstring.c_str());
请注意,VLA不是C ++的一部分,但g ++会“随之而来”,请参阅答案here。
答案 2 :(得分:-3)