string s = "100:T1:R1:170.168.0.9:55555:11111";
stringstream ss;
ss<<s;
string Temp= ss.str();
ss.str(string());
char *buff= const_cast<char *>(Temp.c_str());
I have string in this buff.
int len;
len=sendto(sd, buff,sizeof(buff), 0, (struct sockaddr*)&addr, sizeof(addr));
cout<<"\n"<<len<<endl;
Run Code Online (Sandbox Code Playgroud)
当我编写这段代码时,我的长度为8,即我要发送的字符串的8个字符,但我想发送整个字符串.所以,请帮帮我.
buff声明为char*,并且sizeof(char*)是指针本身的大小,而不是指向的数据的大小.在您的系统上,指针是8个字节(即您的应用程序是为64位操作系统编译的).
不要使用sizeof(buff),使用Temp.length()或strlen(buff)替代(+1如果您还需要发送空终止符,请添加).
另外,你stringstream的例子中没用.
string s = "100:T1:R1:170.168.0.9:55555:11111";
int len = sendto(sd, s.c_str(), s.length(), 0, (struct sockaddr*)&addr, sizeof(addr));
cout << "\n" << len << endl;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
39 次 |
| 最近记录: |