c与c++中一些类型的转化总结(持续更新)

原创 2015年07月10日 13:18:43

一般写小代码时,常常是c和c++不分的,但是有时会遇到类型转换的问题,比如输入 string ,然而处理函数的参数是char*型,之间需要转换。收集一下网上资料,总结一下。因为还没有时间去研究stl源码,暂时先用着吧。
一、string转char*
1、std::string::c_str
Returns a pointer to an array that contains a null-terminated sequence of characters
返回一个数组指针,包含‘\0’的,
例子

// strings and c-strings
#include <iostream>
#include <cstring>
#include <string>

int main ()
{
  std::string str ("Please split this sentence into tokens");

  char * cstr = new char [str.length()+1];
  std::strcpy (cstr, str.c_str());

  std::cout<<cstr<<std::endl;

  delete[] cstr;
  return 0;
}

使用strcpy复制字符串。
char * strcpy ( char * destination, const char * source );
这里面str.c_str()返回的是const char* 类型的。
2、std::string::data
Returns a pointer to an array that contains the same sequence of characters as the characters that make up the value of the string object.
同样返回的是const char* 类型的。
例子

// string::data
#include <iostream>
#include <string>
#include <cstring>

int main ()
{
  int length;

  std::string str = "Test string";
  char* cstr = "Test string";

  if ( str.length() == std::strlen(cstr) )
  {
    std::cout << "str and cstr have the same length.\n";

    if ( memcmp (cstr, str.data(), str.length() ) == 0 )
      std::cout << "str and cstr have the same content.\n";
  }
  return 0;
}

二、char* 转string
1、直接复制

    string str;
    //getline(cin,str);
    char * c="test c char to string";
    str=c;

2、std::string::assign
Assigns a new value to the string, replacing its current contents.
其中就有将c-string 赋值的情况
string& assign (const char* s);

    string str;
    //getline(cin,str);
    char * c="test c char to string";
    str.assign(c);

暂时更新到这,下次遇到再更新

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C/C++在线笔试题总结(持续更新)

下午在牛客网上试做了一下2015校招研发岗位的笔试题,错了蛮多的,这里总结一些题目吧。 1、不算main这个进程,到底创建了多少个进程? int main(int argc, char* argv[]...

C C++ Java 区别性记忆总结【持续更新中】

在原文的基础上有选择性的复制,并添加自己知道为提及的内容。 原文:http://hi.baidu.com/baiyw920/item/1e8031f74854fac2a835a2d6 0.在C++...
  • dscyw
  • dscyw
  • 2013年08月21日 16:15
  • 824

C/C++经典面试题(持续更新)

面试题1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但只能在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件...

模仿R语言c++ 向量类c 矩阵类matrix等(持续更新 欢迎指点)

头文件: [cpp] view plain copy print?class_of_R.h     #ifndef CLASS_OF_R_H_  #define CLASS_OF_R_H_  #inc...

模仿R语言c++ 向量类c 矩阵类matrix等(持续更新 欢迎指点)

这部分利用C++模仿定义了R的向量、矩阵运算,不断更新,在效率上部分编码有欠缺,欢迎指点。 本人统计狗出身,勿喷。...

c/c++知识点(持续更新中......)

c/c++知识点 1. 空类 对于一个空类来说,其sizeof本应该是为0的,但是在进行实例化化的过程中,为了标识每一个对象,编译器会为每个对像分配1个字节的占位符。...

C/C++常用函数备份(持续更新)

有些函数在程序中用的比较多, 就记下来。当然个人写的,虽然经过了简单的测试,但难免有问题,慢慢完善!!! // 产生随机字符串 std::string BuildRandString(int n...
  • tujiaw
  • tujiaw
  • 2011年11月26日 10:46
  • 801

C/C++文档注释神器——Doxygen常用知识整理(持续更新)

C/C++文档注释神器——Doxygen常用知识整理(持续更新) 分类: C++2010-04-14 20:48 772人阅读 评论(0) 收藏 举报 Doxygen是什么 Do...

C以及C++语言基础(持续更新)

编译、连接,转换成机器代码的过程; 源代码—>编译系统—>目标代码(库其他代码)->连接程序->可执行代码;IDE(integrated Devel-opment enviroment)集成开发环境 ...

C/C++/Java/OC在终端下编译和运行(持续更新...)

我们习惯了在各种IDE或者文本编辑器中进行代码编写,而一旦我们失去了IDE之后很多人就不知道怎么编译和运行我们的代码鸟。今天我们就来了解常用的几种编程语言如何在终端的下进行编译和运行。然后我们再简单的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:c与c++中一些类型的转化总结(持续更新)
举报原因:
原因补充:

(最多只允许输入30个字)