C:将int[]转换为字符串
从技术上讲,我意识到它们略有不同,因为数组以null结尾。但是在寻找一种转化的方法C:将int[]转换为字符串,c,arrays,string,char,C,Arrays,String,Char,从技术上讲,我意识到它们略有不同,因为数组以null结尾。但是在寻找一种转化的方法 int charArray[] = {'h', 'e', 'l', 'l', 'o'}; //ascii chars = ints 到 由于charArray不是字符串,因此不能使用标准函数,如strcpy(),或strlen()。而是复制每个字符,并在末尾添加'\0'sizeof(charArray)/sizeof(int)可以告诉您要复制多少个字符 size_t sz = sizeof(charArray
int charArray[] = {'h', 'e', 'l', 'l', 'o'}; //ascii chars = ints
到
由于
charArray
不是字符串,因此不能使用标准函数,如strcpy()
,或strlen()
。而是复制每个字符,并在末尾添加'\0'
sizeof(charArray)/sizeof(int)
可以告诉您要复制多少个字符
size_t sz = sizeof(charArray) / sizeof(int);
char *string = malloc(sz + 1);
for (int i = 0; i < sz; i++)
{
string[i] = charArray[i];
}
string[sz] = '\0';
size\u t sz=sizeof(charArray)/sizeof(int);
char*string=malloc(sz+1);
对于(int i=0;i
您不能在c
中的int[]
和char*
之间进行转换。但是,您可以迭代数组并使用所需的值构建一个char*
,然后将\0
添加到末尾。您也可以通过使用(char*)charArray
进行类型转换,但这很容易出现很多问题,例如缺少\0
终止符。例如,它不适用于strcpy;
char arr[] = {'h','e','l'};
string str(arr);
cout<<str<<endl; // output hel
字符串str(arr);
cout
charArray
属于int[8]
类型,其中asstring
属于char*
类型。它们是不同且不兼容的类型,您无法将一种转换为另一种。您可以定义一个足够大的字符数组,然后将charArray
中的整数(隐式转换为char
类型)复制到该数组中
// length of charArray
int length = sizeof charArray / sizeof charArray[0];
char string[length + 1]; // +1 for the null byte
for(int i = 0; i < length; i++)
string[i] = charArray[i]; // copy the characters
string[i] = '\0'; // add the terminating null byte
//字符长度
int length=sizeof charArray/sizeof charArray[0];
字符字符串[长度+1];//+1表示空字节
for(int i=0;i
对数组值使用{}
而不是[]
。在发布了我的答案后,现在我真的怀疑你的int
是一个打字错误。毕竟,变量有一个名称charArray
.Yu,这里处理ASCII字符,所以底层的int…但是需要将它作为字符串传递给另一个函数,也就是char*@Live2Enjoy7,我仍然不明白为什么会有一个int[]
,这个数据从哪里来?嗯,如果我想把它分解成一个函数,您建议我如何传入charArray[I]?@Live2Enjoy7在将数组作为函数参数传递时要小心,因为它会转换为指针,因此sizeof
会给出指针的大小,而不是数组的大小。您可以考虑将数组的大小传递为另一个参数,例如“代码> FUNC(int数组)[sisixt大小] 不幸的是,编译器抱怨String [i]=字符数组[i],表示期望表达式,这样就删除了警告字符串[i]**CARARSARD[I],他可能会问C代码,很抱歉,我没有看到标签。
// length of charArray
int length = sizeof charArray / sizeof charArray[0];
char string[length + 1]; // +1 for the null byte
for(int i = 0; i < length; i++)
string[i] = charArray[i]; // copy the characters
string[i] = '\0'; // add the terminating null byte