繁体   English   中英

如何在C ++中将int转换为char *(string)?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM