我需要将字符串传递给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*’
答案 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