c++的string.c_str()与char *、const char *的问题
某些函数例如socket编程中要用到的read()、wrtie()函数,会在参数中用到char *类型的参数,c++中的string.c_str()返回一个const char*,那我们可不可以在read函数或write函数中使用string.c_str作为参数呢(主要是想编程的风格统一起来)?例如下面的:std::string read_buf;
std::string send_buf;
write(server_socket_ctrl,(char *)cmd_passwd.c_str(),cmd_passwd.length());
read(server_socket_ctrl,(char *)read_buf.c_str(),read_buf.length());
但是实际运行中发现read部分会报错,但是write却不会,这是什么原因呢? write函数的参数类型应该就是const吧,不需要转化
read函数要求指定一个长度,可是std::string缺省构造的长度是0呀,你应该这么做
string buf( 1000 );
read( &buf, 1000 ); 感觉业务很奇怪哦,代码写得这样 回复 2# bruceteen
理论上不应当通过 c_str()返回的指针更改string的内容 回复 4# folklore
你说得对,所以我用的是 &str
string buf( 1000 );
len = read( &buf, 1000 );
buf.resize( len ); shang2010 发表于 2016-07-15 09:49 static/image/common/back.gif
感觉业务很奇怪哦,代码写得这样
不是业务上用的代码,只是学习过程中产生的一个疑问。 本帖最后由 wind_133 于 2016-07-15 15:48 编辑
谢谢各位了。
字数字数
页:
[1]