将std :: String转换为char *

时间:2013-09-06 17:49:52

标签: c++

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

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;
}

给出错误:

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*’

3 个答案:

答案 0 :(得分:6)

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

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

总而言之:

const char* buf = str.c_str();

答案 1 :(得分:1)

尝试:

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

答案 2 :(得分:1)

首先,Call c_str()有一个函数。 在它之后,c_str()返回一个const char *,如果你想使用std :: strcpy()得到一个char *,你需要复制它:http://en.cppreference.com/w/cpp/string/byte/strcpy