C++中string、char *、char[]的转换

  头段时间有人问过我这个问题,可是我一点头绪都没有,直接说不会。现在从网上找了点资料,看了看,知道点东西了。

  一、string转char*。

  主要有三种方法可以将str转换为char*类型,分别是:data(); c_str(); copy();

  1.data()方法,如:

1 string str = "hello";
2 char* p = str.data();

  2.c_str()方法,如:

1 string str=“world”;
2 char *p = str.c_str();

  3.copy()方法,如:

1 string str="hmmm";
2 char p[50];
3 str.copy(p, 5, 0);//这里5代表复制几个字符,0代表复制的位置
4 *(p+5)="\0";//注意手动加结束符!!!

  二、char * 转string。

  可以直接赋值。

1 string s;
2 char *p = "hello";//直接赋值
3 s = p;

  这里有一点要说明,当声明了string类型变量s后,用printf("%s",s);是会出错的,因为“%s”要求后面的对象的首地址。但是string不是这样的一个类型。所以肯定出错。

  三、string转char[]

  这个由于我们知道string的长度,可以根据length()函数得到,又可以根据下标直接访问,所以用一个循环就可以赋值了。

1     string pp = "dagah";
2     char p[8];
3     int i;
4     for( i=0;i<pp.length();i++)
5         p[i] = pp[i];
6     p[i] = ‘\0‘;
7     printf("%s\n",p);
8     cout<<p;

  四、char[]转string

  这里可以直接赋值。

时间: 2024-10-10 22:15:23

C++中string、char *、char[]的转换的相关文章

转:Java中String与byte[]的转换

fuzhaoyang 转:Java中String与byte[]的转换 原文地址:http://blog.csdn.net/llwan/article/details/7567906 String s = "fs123fdsa";//String变量 byte b[] = s.getBytes();//String转换为byte[] String t = new String(b);//bytep[]转换为String 做JAVA经常会碰到中文乱码问题,还有各种编码的问题,特别是Stri

go中string和slice no-copy转换

在go里面,string和slice的互换是需要进行内存拷贝的,虽然在底层,它们都只是用 pointer + len来表示的一段内存. 通常,我们不会在意string和slice的转换带来的内存拷贝性能问题,但是总有些地方需要关注的,刚好在看vitess代码的时候,发现了一种很hack的做法,string和slice的转换只需要拷贝底层的指针,而不是内存拷贝.当然这样做的风险各位就要好好担当了: func String(b []byte) (s string) { pbytes := (*ref

java中String byte HexString的转换

原文:http://blog.sina.com.cn/s/blog_62e9ec530101ebv6.html HexString——>byte public static byte[] hexStringToBytes(String hexString) { if (hexString == null || hexString.equals("")) { return null; } hexString = hexString.toUpperCase(); int length

java 中string与bytes的转换总结

最近在和导航设备的通讯服务,和设备通讯时,需要将字符串以UTF-16编码传递. 那如何将string,转换为byte[]?其实Java提供了现成的实现:java.lang.string.getbytes(); 用法: byte[] b=str.getBytes(charsetName) string str="南京"; //不设置字节序时候,默认为大端模式 byte[] b=str.getBytes("UTF-16");//结果==0xFE,0xFF,0x53,0x

C++ 中int,char,string,CString类型转换

1. c++中string到int的转换 1) 在C标准库里面,使用atoi: #include <cstdlib> #include <string> std::string text = "152"; int number = std::atoi( text.c_str() ); if (errno == ERANGE) //可能是std::errno { //number可能由于过大或过小而不能完全存储 } else if (errno == ????)

实战c++中的string系列--string与char*、const char *的转换(data() or c_str())

在project中,我们也有非常多时候用到string与char*之间的转换,这里有个一我们之前提到的函数 c_str(),看看这个原型: const char *c_str(); c_str()函数返回一个指向正规C字符串的指针, 内容与本string串同样. 这就看到了吧,返回值是const char*,这里须要注意一下. 1 string转const char* 当然是用到上面所述的方法c_str(): string s1 = "abcdeg"; const char *k =

C++ 中 int,char*,string,CString之间相互转换-整理

#include <string> //使用C++标准库的string类时 using namespace std; //同上 #include <sstream> #include <iostream> #include <stdlib.h> //要将string类和int类型直接转换最好有这些包含, //因为自己写一个转换函数比较方便,函数定义参考如下 string getstring ( const int n ) { std::stringstrea

C++ 中 char 与 int 转换问题

itoa 功  能:把一整数转换为字符串 函  数:char *itoa(int value, char *string, int radix); 解  释:itoa 是英文integer to array(将 int 整型数转化为一个字符串,并将值保存在数组 string 中)的缩写. 参  数:value: 待转化的整数.          radix: 是基数的意思,即先将value转化为radix进制的数,范围介于2-36,比如10表示10进制,16表示16进制.          *s

delphi中pchar、char、string的定义与区别

Char是单个字符:PChar 就是指向一个以Null 结尾的每个字符为一个字节的字符串的指针. (可以看成是一个字符串)String是字符数组,以字符#0结尾: Char只占一字节的空间,而Pchar保存的是一个指针,在现在32位的系统中占有1个指针字节的大小.type PChar=^Char; PChar类型是一个指向Char的指针,并使用Delphi的扩展语法.它也能够作为一个String或者是一个Char数组指针来对待. Pchar的用途 1.PChar最经常的使用方式就是作为用C或C+