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' 结尾的字符数组
没有结尾自然有乱码

参考技术A string b[3];
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类型数组

如何将C++中string类型的字符串转化为unsigned char数组
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类型数组。的主要内容,如果未能解决你的问题,请参考以下文章

C++中,如何讲CHAR数组转换成FLOAT型数据。

如何将char类型转换成int类型?

C++中如何将int或者char转化为string类

刚开始学C++,想请教高手们一下,将CString类型字符串转换为unsigned char型字符数组的转化方式

如何把c++的char字符型转换为string

c++如何将vector<char>转化成string