C:将int[]转换为字符串

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

从技术上讲,我意识到它们略有不同,因为数组以null结尾。但是在寻找一种转化的方法

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]
类型,其中as
string
属于
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