C ++ std :: string InputIterator代码到C代码

时间:2010-02-12 17:41:42

标签: c++ c string

我有一些C ++代码,我发现它完全符合我的需要,但是我需要它在C中,我不知道如何在C中完成它,所以我希望有人可以帮助我。

C ++代码是:

std::string value( (const char *)valueBegin, (const char *)valueEnd );

这是使用string :: string构造函数:

template<class InputIterator> string (InputIterator begin, InputIterator end);

有人可以帮助我将其转换为C代码吗?

谢谢!

3 个答案:

答案 0 :(得分:7)

// Get the number of characters in the range
size_t length = valueEnd - valueBegin;

// Allocate one more for the C style terminating 0
char *data = malloc(length + 1);

// Copy just the number of bytes requested
strncpy(data, valueBegin, length);

// Manually add the C terminating 0
data[length] = '\0';

答案 1 :(得分:0)

C ++代码从另一个字符串的子字符串创建新字符串。 C中的类似功能是strndup

char *str = strndup(valueBegin, valueEnd - valueBegin);
// ...
free(str);

答案 2 :(得分:0)

假设指针算法在你的情况下有意义:

strncpy( value, valueBegin, valueEnd-valueBegin );