由此:
"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 *
。我怎么能这样做呢?
答案 0 :(得分:0)
再次将其复制出来怎么样?
std::size_t len = extractedData.size() + 1;
char *want = new char[len];
strncpy(want, extractedData.c_str(), len);
现在你有want
就可以了。