我有一些C ++代码,我发现它完全符合我的需要,但是我需要它在C中,我不知道如何在C中完成它,所以我希望有人可以帮助我。
C ++代码是:
std::string value( (const char *)valueBegin, (const char *)valueEnd );
这是使用string :: string构造函数:
template<class InputIterator> string (InputIterator begin, InputIterator end);
有人可以帮助我将其转换为C代码吗?
谢谢!
答案 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 );