0

我需要将字符串传递给仅接受 char * 的套接字 send() 函数。所以在这里我试图转换它:

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

3 回答 3

8

首先,c_str()是一个函数,所以你需要调用它。

其次,它返回 aconst char*不是 a char*

总而言之:

const char* buf = str.c_str();
于 2013-09-06T17:51:44.907 回答
1

尝试:

void myFunc(std::string str)
{
    const char *buf = str.c_str();
    std::cout << str;
}
于 2013-09-06T17:52:48.543 回答
1

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

于 2013-09-06T18:00:44.213 回答