关于c ++:将std :: String转换为char *


Coverting std::String to char *

本问题已经有最佳答案,请猛点这里访问。

我需要将字符串传递到只接受char*的socket send()函数中。所以我在这里尝试转换它:

1
2
3
4
5
6
7
8
9
10
11
12
void myFunc(std::string str)  //Taking string here const is good idea? I saw it on some examples on web
{
    char *buf = str.c_str;    //taking buf const is good idea?
    std::cout << str;
}

int main()
{
    const std::string str ="hello world";
    myFunc(str);
    return 0;
}

给出错误:

1
test.cpp:6:18: error: cannot convert ‘std::basic_string<_CharT, _Traits, _Alloc>::c_str<char, std::char_traits<char>, std::allocator<char> >’ from type ‘const char* (std::basic_string<char>::)()const’ to type ‘char*


首先,c_str()是一个函数,因此需要调用它。

其次,它返回一个const char*,而不是一个char*

总而言之:

1
const char* buf = str.c_str();


首先,c all c_str()有一个函数。之后,cStReST()返回conchchar *,如果您想使用STD::STRCyPy.():HTTP://E.CPasePyCEN.COM/W/CPP/STRIG/BYTE/STRPY,则需要复制它。


尝试:

1
2
3
4
5
void myFunc(std::string str)
{
    const char *buf = str.c_str();
    std::cout << str;
}