c++ ' assign() '在C中的等价
C++ `assign()` equivalent in C
关于如何在C中实现c++ assign()
的任何想法?
c++代码示例:
std::string ds;
// snip //
ds.assign((const char *)start, end - start);
在C中使用相同的语法,我在编译时得到以下错误:
error: request for member 'assign' in something not a structure or union
如果您想在C中使用C字符串,请查看string.h中使用C字符串的函数(如strcpy)
http://www.cplusplus.com/reference/cstring/strcpy/您的意思似乎是下面的代码片段
std::string ds;
char s[] = "Hello Wotld";
char *start = s;
char *end = s + sizeof( s ) - 1;
ds.assign( start, end - start );
在C中处理原始指针。所以类似的内容可以如下所示
char * assign( char *dest, const char *source, size_t n )
{
free( dest );
char *p = ( char * )malloc( n + 1 );
if ( p != NULL )
{
strncpy( p, source, n );
p[n] = ' ';
}
dest = p;
return dest;
}
例如char *ds = NULL; // it is important to initialize it to NULL
char s[] = "Hello World";
ds = assign( ds, s, sizeof( s ) - 1 );
//...
free( ds );
相关文章:
- C++ 使用 assign 函数的字符串与直接使用 '=' 更改值的字符串之间的区别
- 集合上的输出迭代器:assign和increment迭代器
- 'string.assign(string.data(), 5)' 是明确定义的还是 UB?
- Vector, assign() function Undefined Behavior
- 这在C++ "It does not own the underlying data, and so is cheap to copy or assign"中意味着什么
- std::vector::assign/std::vector::operator=(const&) 是否保证在"this"中重用缓冲区?
- Tensorflow C++ API assign variable value
- 'QML Connections: Cannot assign to non-existent Property'尽管情况正好相反
- 为什么 std::optional 不允许"move construct and copy assign only"类型的移动分配?
- 如何使用Windows API直接将进程"assign"到信号量?
- 为什么 std::string_view 没有 assign() 和 clear() 方法?
- 为什么 boost::assign::list_of 不适用于对字符串、矢量<string>><?
- C++ Firebase 分段错误,Linux,位于 std::string::assign 无法访问地址 0xf 处的
- 在 CMake for Visual Studio 2010 中定义宏"disallow copy and assign"
- 填充 std::d eque<std::vector<std::string>> with boost::assign::list_of
- 没有重载函数需要 2 个参数错误,并带有 boost::assign::list_of
- Segfault at string::assign
- Using boost::assign::list_of
- boost/assign.hpp 在 Xcode 6.3 中失败
- std::char_traits::assign()的目的是什么?