C++,如何将char型数组转换为string类型数组。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++,如何将char型数组转换为string类型数组。相关的知识,希望对你有一定的参考价值。
例如,已经定义好char型数组A[3][4]. 想得到string型的B[3]。 其中B[0]是A的第一行,B[1]是A的第二行,B[2]是A的第三行。有什么简洁的实现方式?
举个例子:#include <iostream>
#include <string>
using namespace std;
int main()
string str[3];
char A[2][20]="Hello ","string!";
str[0]=A[0];
str[1]=A[1];
cout<<str[0]<<str[1]<<endl;
system("pause");
return 0;
你运行一下就明白了追问
string B[4];
char A[4][3];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
A[i][j]='0';
A[2][1]=A[0][2]='1';
for(i=0;i<4;i++)
B[i]=A[i];
为什么这样会输出乱码呢?
A[i]是字符,不是字符串,必须是C的标准字符串,也就是一个以'\0' 结尾的字符数组
没有结尾自然有乱码
char a[3][4];
for(int i=0;i<3;i++)
b[i]=a[i];追问
#include
#include
using namespace std;
void main()
int i,j;
string B[5];
char A[4][3];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
A[i][j]='0';
A[2][1]=A[0][2]='1';
for(i=0;i<4;i++)
B[i]=A[i];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cout<<A[i][j];
cout<<endl;
for(i=0;i<4;i++)
cout<<B[i]<<endl;
#include#include
using namespace std;
void main()
int i,j;
string B[5]; //这个应该是5吧
char A[5][3]=0; //初始化
for(i=0;i<4;i++)
for(j=0;j<3;j++)
A[i][j]='0';
A[2][1]=A[0][2]='1';
for(i=0;i<4;i++)
B[i]=A[i];
for(i=0;i<4;i++)
for(j=0;j<3;j++)
cout<<A[i][j];
cout<<endl;
for(i=0;i<4;i++)
cout<<B[i]<<endl;
如何将C++中string类型的字符串赋给unsigned char数组
如何将C++中string类型的字符串转化为unsigned char数组
如何将C++中string类型的字符串转化为wchat_t类型数组
std::string str("str");
由于string内部本身就是char的动态数组
另外char和unsigned char的存储空间完全一样 都是1byte
一般直接 &str[0]就可以了
如果要复制的话
unsigned char arr[size] = 0; //这个size 要大于 str.size();
memcpy(arr, &str[0], str.size());
如何将C++中string类型的字符串转化为wchat_t类型数组
字符编码不样的
可以用windows的MultibyteToWidechar
如果要跨平台的话建议直接用iconv处理 参考技术A
写了unsigned char的,另一个类型照抄
#include <string>#include <iostream>
using namespace std;
int main()
string s="i like it";
unsigned char str[200];
int len=s.length();
for(int i=0;i<len;++i)
str[i]=s[i];
str[i]='\\0';
cout<<str<<endl;
追问
貌似有点问题,编译能过,运行就不行了
内存越界了,你的char数组定义的够长么?
会不会超过那个12或者1024?
我把num给变成1024也不行,我确定够长
追答方法肯定没有问题,我的例子我也运行过。
你把numbers[12]已经修改为 numbers[1024]了?
你应该可以调试吧,看看num是什么字符串,length多长,i到哪里越界的?
num没有问题了,问题就在这个宽字节wchar_t上
追答想不出来! 调试吧,num没有问题证明方法是对的
string内部是char,这么转换类型给wchar_t,后续使用有没有问题?
你需要看看words是什么字符串,length多长,i到哪里越界的?
以上是关于C++,如何将char型数组转换为string类型数组。的主要内容,如果未能解决你的问题,请参考以下文章