将char数组的一部分提取为char *

时间:2018-01-24 02:35:53

标签: c++

由此:

"16;foo;interesting-text"

这是char[]我想提取几个部分。我已经设法如何将16解压缩为int foo作为string,但我将interesting-text提取为指向char*的指针时遇到问题。

现在就是这样做的:

"16;foo;bar;interesting-text"
//dataLen contains 16
//foundSecondComma is index of second semicolon occurence

char* messageData = new char[dataLen+1];
memcpy(messageData, buffer+foundSecondComma+1, dataLen);
//messageData contains 'interesting-text' and few unnecessary characters

string extractedData(messageData, dataLen);

//do stuff with messageData

delete messageData;

之后messageData包含interesting-text和一些不需要的字符。我可以将其转换为字符串(extractedData),但我确实需要char *。我怎么能这样做呢?

1 个答案:

答案 0 :(得分:0)

再次将其复制出来怎么样?

std::size_t len = extractedData.size() + 1;
char *want = new char[len];
strncpy(want, extractedData.c_str(), len);

现在你有want就可以了。