2015-03-02 71 views
0
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; 

当我写这段代码时,我得到的长度是8,即我想发送的字符串的8个字符,但是我想发送整个字符串。 所以,请帮助我。发送到函数错误:

回答

5

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;