char *到std :: string

时间:2011-01-25 09:32:36

标签: c++

我在C ++中有一个字符数组(char * pData),我想要做的是在std :: string中复制一些数据(来自pData)。代码如下所示:

std::string sSomeData(pData+8);//I want to copy all data starting from index 8 till end

问题是当上面的语句执行时,字符串中不包含任何内容。 我猜我的pData没有以'\ 0'结尾,这就是为什么它不起作用。

此致 詹姆斯。

3 个答案:

答案 0 :(得分:6)

如果您知道pData的大小,可以使用construct-from-iterators构造函数:

std::string sSomeData(pData + 8, pData + size_of_pData);

答案 1 :(得分:2)

如果您不知道您的数据是否为NULL终止,那么您应该知道数据的大小(即有多少个字符)。否则无法复制它。知道大小后,可以在字符串构造函数中指定它。以下是示例代码:

int main( void )
{
    char p[] = {'N','a','v','e','e','n'};
    std::string s(p+3, p+6);
    return 0;
}

答案 2 :(得分:1)

使用std::string sSomeData(pData+8, pData+8+n),其中n是您要复制的字符数。