unsigned char [] 与 std::string 相互转换问题!C++

问题描述

unsigned char [] 与 std::string 相互转换问题!C++

求这两个类型的相互转换的代码,同时还想问下怎样将大文件转换为 unsigned char [] 类型。(验证文件时过大读不进内存)

解决方案

http://zhidao.baidu.com/link?url=qx3_qtTjI-XcmUo_kyCRI3HhUmD0OZFg0DuGzMuUV57H3P8YRDder_KdQ43GOZ6V9knWDDWpFsWWrS67eGg0cbK83FvszP5JEpPnDeYcyPC

大文件要看多大,如果非常大,不建议一次性读取到数组中。

解决方案二:

char[]转换为string:
string s1;
char *pc = "a character array";
s1 = pc; // ok

string转换为char[]:
char *str = s1.c_str();

大文件读取,需要进行分段.比如每10M进行读取,待处理完后,释放这块内存,读取下一10M的内容。

解决方案三:

用memcpy,需要强制转换

时间: 2025-01-01 09:49:26

unsigned char [] 与 std::string 相互转换问题!C++的相关文章

c++的问题- error C2440: “默认参数”: 无法从“const char [7]”转换为“std::string &”

问题描述 error C2440: "默认参数": 无法从"const char [7]"转换为"std::string &" 代码如下: 1 #include 2 using namespace std; 3 class Student{ 4 string name; 5 public: 6 Student(string& n ="noName") :name(n){} 7 }; 8 class Teache

c#中 uint--byte[]--char[]--string相互转换汇总

原文:c#中 uint--byte[]--char[]--string相互转换汇总          在在做一些互操作的时候往往需要一些类型的相互转换,比如用c#访问win32api的时候往往需要向api中传入DWORD参数 即:uint参数这些数值所表示的数据在实际的应用中可能需要以字符的形式显示,但是c#对api的关系无法跟c++相比,所以在c#中进行一些类型数据的转换十分必要了,    下面将用到的一些简单的转换操作贴上来,方便记忆       //uint--->byte[] byte[

C2440: “delete”: 无法从“std::string”转换为“void*”

问题描述 C2440: "delete": 无法从"std::string"转换为"void*" #include ""stdafx.h""#include #include using namespace std;class A{public: virtual ~A() { cout << ""call A::~A()"" << endl;

JNI和C++中的String相互转换

原文:http://blog.csdn.net/uper945/article/details/1935706 JNI和C++中的String相互转换 Uper 目前仍在继续先前的工作,这两天一直在折腾jstring 和char* 之间是如何转换的.在网上找了些例子和张孝祥jni的视频,现把自己成功运行例子贴出来. //jstring to char* char* jstringTostring(JNIEnv* env, jstring jstr) {        char* rtn = NU

std::string的Copy-on-Write:不如想象中美好

Copy-on-write(以下简称COW)是一种很重要的优化手段.它的核心思想是懒惰处理多个实体的资源请求,在多个实体之间共享某些资源,直到有实体需要对资源进行修改时,才真正为该实体分配私有的资源. COW技术的一个经典应用在于Linux内核在进程fork时对进程地址空间的处理.由于fork产生的子进程需要一份和父进程内容相同但完全独立的地址空间,一种做法是将父进程的地址空间完全复制一份,另一种做法是将父进程地址空间中的页面标记为"共享的"(引用计数+1),使子进程与父进程共享地址空

C++: std::string 与 Unicode 如何结合?

关键字:std::string Unicode 转自:http://www.vckbase.com/document/viewdoc/?id=1293   一旦知道 TCHAR 和_T 是如何工作的,那么这个问题很简单.基本思想是 TCHAR 要么是char,要么是 wchar_t,这取决于_UNICODE 的值:     1: // abridged from tchar.h 2:  3: #ifdef _UNICODE 4:  5: typedef wchar_t TCHAR; 6:  7:

c#调用dll,c++的std::string参数怎么处理,谢谢

问题描述 //c++中的dll函数,参数为std::string,函数的目的是将值赋给nameextern"C"_declspec(dllexport)voidGetInfo(std::string&strName,std::stringstrDevice);那么c#调用它,参数怎么写呢,谢谢,std::string在c#中没有对应的类型,如果用System.String程序会崩溃 解决方案 解决方案二:原来想这种传出的,要用stringBuilder,用string不行,如果

关于std::string

主要注意的一个问题是:std::string 实际是类似一个 vector<char>的结构. 它里面是可以存放 ascii为0 的字符不算结尾 (否则 unicode方式的编码存放就有问题) 实际长度 用 length()获取 至于string赋值和构造有好几种方式,可以看文档. 举例说明:char c[10]="wer|\t";c[4] = 0;std::string s =c;由于c是char* 长度只能用strlen获取, strlen遇到0 就结束了,所以就丢失数

c# 获取串口设备的输入(unsigned char *和 char*)

因为是C#,所以平台肯定是.NET了. 之前因为一个小小的业务需要接触了下密码键盘的操作.其实就是简单的获取用户输入密码的操作,没碰到什么大的问题,但是查资料的过程中还是感觉查到的东西挺多的,是那种越查越多,但是又不是很关键的东西. 在调用DLL中的方法的时候,我们一般要对照函数说明来把C/C++中的类型转换为.NET中相对应的类型,而且方法必须声明为静态外部函数,即加上public  extern static声明头.如果不加public ,函数默认为私有函数,调用就会出错. [DllImpo