如何将 char* 转换为 std::string
How to convert char* to std::string
下面的函数returns一个char*:
// Returns the pointer to the actual packet data.
// @param pkt_handle The buffer handle.
// @param queue The queue from which the packet is arrived or destined.
// @return The pointer on success, NULL otherwise.
u_char * pfring_zc_pkt_buff_data(
pfring_zc_pkt_buff *pkt_handle,
pfring_zc_queue *queue
);
下面的函数将字符串作为输入。
template<class ...Args>
bool write(Args&&... recordArgs) {
auto const currentWrite = writeIndex_.load(std::memory_order_relaxed);
auto nextRecord = currentWrite + 1;
if (nextRecord == size_) {
nextRecord = 0;
}
if (nextRecord != readIndex_.load(std::memory_order_acquire)) {
new (&records_[currentWrite]) T(std::forward<Args>(recordArgs)...);
writeIndex_.store(nextRecord, std::memory_order_release);
return true;
}
// queue is full
return false;
}
我无法更改函数代码。 u_char * pfring_zc_pkt_buff_data
returns 指向 pfring_zc_recv_pkt(zq, &buffers[lru], 1)
.
捕获的实际数据包的指针
我需要将部分数据包保存到缓冲区,所以我必须将 u_char* 转换为字符串*
.有很多类似的问题,例如:
How to Convert unsigned char* to std::string in C++?
How to convert a const char * to std::string
How to convert char to string?
我找不到适合我的问题的答案。
这是我的一些代码。
void run() {
int i=0,n;
char buf[_snapLengthConnection + _ConnectionHeaderSize];
for(;;){
if(likely(pfring_zc_recv_pkt(zq, &buffers[lru], wait_for_packet)>= 0)) {
u_char *pkt_data = pfring_zc_pkt_buff_data(buffers[lru], zq);
pfring_print_pkt(buf, sizeof(buf), pkt_data, buffers[lru]->len,sizeof(buf));
std::string *payload;
//need to save buf to payload
// how do i copy buf to payload?
std::cout<< payload<<"=="<<std::endl;
_activeBuffer->queue->write(payload);
}
}
}
如何将 u_char* 转换为字符串?
OS: Ubuntu
gcc 版本:4.8.2
std::string
有一个构造函数:
const char *str = "Shravan Kumar";
std::string str(str);
只需确保您的 char *
不是 NULL
,否则会导致未定义的行为。
下面的函数returns一个char*:
// Returns the pointer to the actual packet data.
// @param pkt_handle The buffer handle.
// @param queue The queue from which the packet is arrived or destined.
// @return The pointer on success, NULL otherwise.
u_char * pfring_zc_pkt_buff_data(
pfring_zc_pkt_buff *pkt_handle,
pfring_zc_queue *queue
);
下面的函数将字符串作为输入。
template<class ...Args>
bool write(Args&&... recordArgs) {
auto const currentWrite = writeIndex_.load(std::memory_order_relaxed);
auto nextRecord = currentWrite + 1;
if (nextRecord == size_) {
nextRecord = 0;
}
if (nextRecord != readIndex_.load(std::memory_order_acquire)) {
new (&records_[currentWrite]) T(std::forward<Args>(recordArgs)...);
writeIndex_.store(nextRecord, std::memory_order_release);
return true;
}
// queue is full
return false;
}
我无法更改函数代码。 u_char * pfring_zc_pkt_buff_data
returns 指向 pfring_zc_recv_pkt(zq, &buffers[lru], 1)
.
我需要将部分数据包保存到缓冲区,所以我必须将 u_char* 转换为字符串* .有很多类似的问题,例如:
How to Convert unsigned char* to std::string in C++?
How to convert a const char * to std::string
How to convert char to string?
我找不到适合我的问题的答案。
这是我的一些代码。
void run() {
int i=0,n;
char buf[_snapLengthConnection + _ConnectionHeaderSize];
for(;;){
if(likely(pfring_zc_recv_pkt(zq, &buffers[lru], wait_for_packet)>= 0)) {
u_char *pkt_data = pfring_zc_pkt_buff_data(buffers[lru], zq);
pfring_print_pkt(buf, sizeof(buf), pkt_data, buffers[lru]->len,sizeof(buf));
std::string *payload;
//need to save buf to payload
// how do i copy buf to payload?
std::cout<< payload<<"=="<<std::endl;
_activeBuffer->queue->write(payload);
}
}
}
如何将 u_char* 转换为字符串?
OS: Ubuntu
gcc 版本:4.8.2
std::string
有一个构造函数:
const char *str = "Shravan Kumar";
std::string str(str);
只需确保您的 char *
不是 NULL
,否则会导致未定义的行为。