gpt4 book ai didi

C 中的 c_str() 等价物

转载 作者:太空宇宙 更新时间:2023-11-04 05:38:55 25 4
gpt4 key购买 nike

我刚刚开始使用 C 编程语言来编写我的类(class)项目,我对 C 的了解不多。我已经使用 C++ 一段时间了,我需要在中找到 c_str() 函数的替代方法C. 我正在尝试编写类似于下面的 C++ 代码的代码(在 C 中)。我完全不知道该怎么做。非常感谢任何帮助。

void putVar(double* var,int N, string name, Engine *ep){
double row = N, col = N;
mxArray *matlab = mxCreateDoubleMatrix(row, col, mxREAL);
double *pa = mxGetPr(matlab);
memcpy(pa, var, sizeof(double)*row*col);
engPutVariable(ep, name.c_str() , matlab);
}

最佳答案

I need to find an alternative to c_str() function in C...

正如上面的评论所述,C 没有 string 类型,但 C 确实使用 char 数组,并且当 NULL 终止时通常称为 < em>C 字符串.
在 C 中创建字符串的方法有很多种。以下是三种非常常见的方法:

给定以下内容:(在本例中用于说明)

#define MAX_AVAIL_LEN sizeof("this is a C string") //sets MAX_AVAIL_LEN == 19

1

char str[]="this is a C string";//will create the variable str, 
//populate it with the string literal,
//and append with NULL.
//in this case str has space for 19 char,
//'this is a C string' plus a NULL

2

char str[MAX_AVAIL_LEN]={0};//same as above, will hold 
//only MAX_AVAIL_LEN - 1 chars for string
//leaving the last space for the NULL (19 total).
//first position is initialized with NULL

3

char *str=0;  
str = malloc(MAX_AVAIL_LEN +1);//Creates variable str,
//allocates memory sufficient for max available
//length for intended use +1 additional
//byte to contain NULL (20 total this time)

注意,在这第三个例子中,虽然没有伤害,
如果
的最大长度,则“+1”不是真正必要的要使用的字符串 <= "this is a C string"的长度。
这是因为当 sizeof() 用于创建 MAX_AVAIL_LEN 时,
它在评估字符串时包含 NULL 字符
文字长度。 (即 19)
尽管如此,在为C字符串分配内存时通常这样写<​​br/>以显式显示在内存分配期间已考虑了 NULL 字符的空间。

注意 2,同样对于第三个示例,在使用完 str 时必须使用 free(str); .

在此处查找 more on C strings

关于C 中的 c_str() 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24788864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com