首页 文章

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

提问于
浏览
0

SOCKET lhSocket; int iResult; lhSocket = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); char * sendbuf =“这是一个测试”; iResult = send(lhSocket,sendbuf,(int)strlen(sendbuf),0);

printf("Bytes Sent: %ld\n", iResult);

我有客户端和服务器程序在C中使用套接字现在我发送一个缓冲区,它现在由服务器接收,当服务器确认我回来说我得到你的数据包我应该得到字符串格式而不是字节收到:东西 . 怎么实现呢?

我的iresult返回一个整数值,我通过套接字向服务器发送消息,我不想打印它作为字节发送:14 . 我想打印作为字符串发送到服务器的消息 . 我正在处理套接字 . 我怎样才能在C中实现这一目标

6 回答

  • 1

    sendbuf 是您要发送的字符串 . 打印 sendbuf 代替:

    printf("Bytes Sent: %s\n", sendbuf);
    
  • 4
    stringstream buf;
    buf << 12345;
    buf.str(); // string("12345")
    buf.str().c_str(); // char* "12345"
    
  • 2

    另一个机会是boost :: lexical_cast <>

    const int myIntValue = 12345;
    const std :: string myStringValue = boost :: lexical_cast(myIntValue);

  • 0

    你在 Headers 和帖子中问了不同的东西 .

    将C转换为C中的字符串

    #include <sstream>
    std::ostringstream oss;
    oss << some_int;
    // do whatever with oss.str()...
    

    正如Tomasz所说 .

    要从套接字接收数据,您需要再调用recv()或read() . 您的“发送”呼叫本身不会等待回复 . recv()或read()接受字符数组缓冲区来读取响应,但是你需要循环读取多少调用返回,直到你有足够的响应来处理,因为TCP就是所谓的“字节流”协议,这意味着您无法保证获得完整的数据包,线路,消息或每个呼叫的字节以外的任何内容 .

    鉴于您的问题意味着理解程度,我强烈建议您查看插件编程的GNU libC示例 - 有一些服务器和客户端示例 - 可以通过Google轻松找到 .

  • 0

    如果您使用visual C 2008或2010,我认为有一个内置的功能来完成您的工作 .

    像itoa(int);将转换给定的int并返回一个char *

    很简单

    它在stdlib.hlbtw中

    **确保在所有编译器或distrubutions中都不一样http://www.cplusplus.com/reference/clibrary/cstdlib/itoa/这里有一个参考链接

  • 0

    看一下将整数转换为字符串的itoa .

相关问题