如何将C++中string类型的字符串赋给unsigned char数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将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++中怎么把一个字符串赋给一个变量

1.我想把一个字符串赋给一个变量,不知怎么弄.输出呢?
2.字符串数组如何得到.例如str[5]是一个字符串的数组,现在想在str[1]中存储"ABC",在str[2]中存储"ABCDE",在str[3]中存储"ABCDEF"....请问像这样的赋值和输出应该怎么实现呢?
谢谢!

    对于string型的变量,直接赋值即可,如string str="abcde";使用string类需要使用头文件#include <string>

    对于char数组型的变量,在声明时可以直接赋值,如char str[] = "abcde",

    对于char数组型的变量,在非声明的时候赋值时,不能直接赋值,如char str[64];str = "abcde";是不允许的,需要借助strcpy函数进行赋值,需要使用头文件#include <string.h>。使用方法:

char str[64];
strcpy(str, "abcde");//将abcde拷贝到str数组中。

参考技术A 可以使用:
strcpy(str, "ABC");strcpy(str,"ABCDE");
但是有一点要注意,str的空间大小要够存放后面的字符串.
这样就可以把ABC赋值给str了.
包含头文件:
#include <string.h>
字符串数组可以如下定义:
char *str[3]=
"ABC",
"ABCDE",
"AAAA"
如果对str[0]赋值,同样可以用上面的函数
strcpy(str[0], "sfdsfsd");

在C++中,可以使用C++标准库中的string类,
定义string str;
str = "ABC";
str = "ABCDE"
这个要添加如下头文件
#include <string>
using namespace std;
参考技术B for(i=1,i<=10,i++)

CString
string[20];
string[i].Format("%d",i);
C++
编辑词条
C++这个词在中国大陆的程序员圈子中通常被读做“C加加”,而西方的程序员通常读做“C
plus
plus”,“CPP”。
它是一种使用非常广泛的计算机编程语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。最新正式标准C++于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!
参考技术C 问题一的解决:
这个问题通常有两种解决方法,一个是字符数组(现已不常用)另一个是string类,当然这个要在头文件中加上#include<string>
代码如下:
#include<iostream>
#include<string>
using namespace std;]
int main()
string str="abcd";
cout<<str;

或者是
#include<iostream>
using namespace std;
int main()
char *ch="abc";
cout<<ch;


或者是
#include<iostream>
using namespace std;
int main()
char ch[3]="abc"; //〔〕中可以是3也可以是其它任意数
cout<<ch;

问题二的解决:
定义数组时用定义或用结构体或类来解决
#include<iostream>
using namespace std;
int main()
string str[3];
for(int i=0;i<3;++i)
cin>>str[i];
for(int i=0;i<3;++i)
cout<<str[i];
本回答被提问者采纳
参考技术D cin>>str//输入数组str
cin>>str[1]>>str[2]//输入字符串str[1]和str[2]
cout<<str //输出数组str
cout<<str[1]//输出字符串str[1]

以上是关于如何将C++中string类型的字符串赋给unsigned char数组的主要内容,如果未能解决你的问题,请参考以下文章

c++程序 我为啥不能将string类的变量赋给char数组,我按书上打的?

c++中怎么把一个字符串赋给一个变量

关于C++中string类型变量的赋值

如何将String类的字符串 赋值给Char数组

如何将String类的字符串 赋值给Char数组

C++中string和char字符串的异同与使用方法