Die folgende Funktion gibt einen char * zu konvertieren.Wie char * std :: string
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;
}
kann Funktionen nicht ändern. Die u_char * pfring_zc_pkt_buff_data
gibt einen Zeiger auf das tatsächliche Paket zurück, das von pfring_zc_recv_pkt(zq, &buffers[lru], 1)
erfasst wird.
Ich muss einen Teil des Pakets in einen Puffer speichern. Ich muss char * string * .Es gibt viele ähnliche Fragen wie konvertieren:
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?
nicht finden die richtige Antwort für meine Frage.
hier sind einige meiner Code.
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);
lru++; lru &= NBUFFMASK;
}
}
LOG_INFO("capture_loop for connections: Exiting");
}
Wie kann char * in eine Zeichenfolge umgewandelt werden?
OS: UBUNTU gcc Version: 4.8.2
Was meinst du mit 'std :: string *'? – Shravan40
@ Shravan40. Die Frage ist bearbeitet –
@ m.r226 Kennen Sie die Länge der Daten? –