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

まず Call c_str() には関数があります。その後、c_str() は const char* を返します。 std::strcpy() を使用して char* が必要な場合はコピーする必要があります: http://en.cppreference.com/w/cpp/string/byte /strcpy

于 2013-09-06T18:00:44.213 に答える