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*’ |
首先,
其次,它返回一个
总而言之:
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; } |