美文网首页
7.1string类和字符串

7.1string类和字符串

作者: tomchan | 来源:发表于2015-10-06 17:38 被阅读61次

char* 与 char [] 的区别

char *a = "abcd";  此时"abcd"存放在常量区。通过指针只可以访问字符串常量,而不可以改变它。(如果像char *a = "abcd",C++11已经会警告说“not allow conversion from string literal to char* ”  在 char前添加const即可消除警告,即 const char *a = "abcd")

char* a =new char[10];  //此时可以修改*a

而char a[20] = "abcd"; 此时 "abcd"存放在栈。可以通过指针去访问和修改数组内容。

所以

char* a = "abc"; //实质是const char* a="abc"

char b[20] = "123";

strcat(a , b); //错误,因为*a是在常量区,不可以修改

strcat(b , a);//正确,运行结果是 123abc

char* get_str(void)

{

char str[] = {"abcd"};

return str;

}

char str[] = {"abcd"};定义了一个局部字符数组,尽管是数组,但它是一个局部变量,返回它的地址肯定是一个已经释放了的空间的地址。

此函数返回的是内部一个局部字符数组str的地址,且函数调用完毕后 此数组被销毁,所以你返回的指针也就指向一块被销毁的内存,这种写法是错误的。

char* get_str(void)

{

char *str = {"abcd"};

return str;

}

char* str = {"abcd"};表示先定义个字符串常量,并将其地址赋给str。

此函数返回的是字符串常量的地址,而像这种字符串都是属于全局的,在编译的时候就已经分配了内存了,只有程序退出的时候才会被销毁,所以返回它的地址是没有问题的,但是你最好返回常量指针,因为你不能去改变字符串常量的值。

数组和指针是不同的数据类型,有本质的区别:

char str[] = "abcd";         //sizeof(str) == 5 * sizeof(char)

char * str = "abcd";        //sizeof(str) == 4(x86) or 8(x64)

数组可以自动转型成指针,指针不能转成数组。

string转换为 char 数组字符串

法1.  const char* b = string.c_str() ;

法2.  char b[2];

        strcpy(b , string.c_str() ) ;

字符串的输入

(1)方法一:使用输入操符来填充一个C字符串变量

例如:

char a[80];

cin>>a;

注:以这种方式来读取C字符串时,会忽略最初的空白字符(空格、制表符和换行符),而且输入会在下一个空格或者换行符处停止。(string字符串也是同理)

(2)方法二:使用预定义函数getline获取整行输入(包括空格)

getline函数有两个参数:第一个参数用于接收输入的C字符串变量;第二个参数用于规定getline最多能接收的字符个数( 还有一个位置是给结束标志位的 )。

例如:

char a[80];

cin.getline(a,80);

当遇到行结束的时候,输入才会停止。

字符串到数字的转换

atoi函数获取一个C字符串参数,返回对应的int值。如果参数不与一个int值对应,atoi就会返回0。atoi函数在文件为cstdlib的库中。如果数字太大,不能转换成int类型的值,可以使用atol将字符串转换为long类型的值。

例如:

atoi("1234");   //返回整数1234

atoi("#123");   //返回0

相关文章

  • 7.1string类和字符串

    char* 与 char [] 的区别 char *a = "abcd"; 此时"abcd"存放在常量区。通过指针...

  • 3-Java常用工具类-字符串

    字符串处理类。 常用的: String类和StringBuilder类 Java中字符串是被作为一个String...

  • 可变字符串类和日期相关类

    来自拉钩教育-JAVA就业集训营 可变字符串类和日期相关类 可变字符串类(重点) 基本概念 由于String类描述...

  • C/C++语言基础

    语言基础 字符串类-string 常量与变量 运算符 程序和语句 字符串类-string (属于类类型)(c++中...

  • 学Java(String类)

    能够表示字符串:String类,StringBuffer类,StringBuilder类。 String类:字符串...

  • Swift 语法进阶

    初始化字符串 字符串常用方法介绍 集合类型 数组 字典 解包(if let) if let 语句 类 创建类和属性...

  • Java常用类,这一次帮你总结好

    常用类 常用类概述: 内部类 Object类 包装类 数学类 时间类 字符串 String Builder和Str...

  • 三、字符串和矩阵

    三、字符串和矩阵 1. 字符串 1.1 字符串的按需(堆)存储结构 实现: HString 类中存储字符串的方式和...

  • 常用类库

    一、java.lang object 类数学类(Math)数据类型类线程类字符串类(String 和 String...

  • Guava字符串拼接工具类

    Guava字符串拼接工具类 Joiner和Splitter 算是一个比较有意思的工具类了,可以实现字符串的分割和容...

网友评论

      本文标题:7.1string类和字符串

      本文链接:https://www.haomeiwen.com/subject/qgagcttx.html