[英]How to Convert int to char*(string) in C++?
SOCKET lhSocket; int iResult; lhSocket =套接字(AF_INET,SOCK_STREAM,IPPROTO_TCP); char * sendbuf =“这是一个测试”; iResult = send(lhSocket,sendbuf,(int)strlen(sendbuf),0);
printf("Bytes Sent: %ld\n", iResult);
我有使用C ++中的套接字使用的客户端和服务器程序,现在我发送一个缓冲区,现在服务器确认我说我得到了你的包后,服务器应该收到它了,我应该以字符串格式而不是接收到的字节数来获取它:某事。 如何实现呢?
我的厌烦返回给我一个整数值,我正在通过套接字向服务器发送消息,我不想将其打印为已发送的字节数:14.我想将消息作为字符串发送至服务器。 我正在处理套接字。 我如何在C ++中实现这一目标
stringstream buf;
buf << 12345;
buf.str(); // string("12345")
buf.str().c_str(); // char* "12345"
sendbuf
是您要发送的字符串。 打印sendbuf
:
printf("Bytes Sent: %s\n", sendbuf);
另一个机会是boost :: lexical_cast <>
const int myIntValue = 12345;
const std :: string myStringValue = boost :: lexical_cast(myIntValue);
看一下itoa ,它将整数转换为字符串。
您在标题和帖子中提出了不同的要求。
在C ++中将int转换为字符串是使用
#include <sstream> std::ostringstream oss; oss << some_int; // do whatever with oss.str()...
如Tomasz所示。
要从套接字接收数据,您需要进一步调用recv()或read()。 您的“发送”呼叫本身不会等待答复。 recv()或read()接受字符数组缓冲区以将响应读入其中,但是您将需要循环读取无论调用返回多少,直到您对进程有足够的响应为止,因为TCP被称为“字节流”协议,这意味着您不能保证获得完整的数据包,线路,消息或每个呼叫一个字节以外的任何内容。
考虑到您的问题所隐含的理解水平,我强烈建议您看一下GNU libC套接字编程示例-有一些服务器和客户端示例-可以通过Google轻松找到。
如果您使用Visual C ++ 2008或2010,我认为有内置的功能可以完成您的工作。
像itoa(int); 将转换给定的int并返回一个char *
很简单
它在stdlib.hlbtw中
**确保在所有编译器或发行版中都不相同http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/这是参考链接
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.