c++ ' assign() '在C中的等价

C++ `assign()` equivalent in C

本文关键字:assign c++      更新时间:2023-10-16

关于如何在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 );