簡體   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