C/C++中string与char的区别

  • 一、c语言中的字符串

  c中没有string类型,c中字符串是通过字符指针来间接实现。

  字符串常量是由双引号相括的字符序列表示。

     char* string = "Student";

  对字符指针可以用串常量初始化,实际上系统完成了2步操作:先申请堆空间,然后填入串值。

               char* string = new char[8];

               strcpy(string,"Student");

    示例一:
    c中的char* 定义字符串,不能改变字符串内的字符的内容,但却可以把另外一个字符串付给它
      #include "stdio.h"

       int main()

      { 

        char* str1 = "hello world\n";

          str1 = "aa"; 

          str1[1] = "a"; //报错  

          printf("%s",str1);

      }

    C++中使用char*定义字符串,同样不能改变字符串内的字符的内容,但却可以把另外一个字符串付给它
    #include<iostream>

     using namespace std;

     int main()

    { 

       char* pstr = "hello world";

       pstr = "aa";

       pstr[1] = "a"; //报错 

       cout<<pstr<<endl;  //直接输出的方式。

    }

 
#include<iostream>
using namespace std;

int main()
{
    char* str = {"abcd"};
    for(int i = 0;i<4;i++)
    {
        cout<<str[i];
    }  //输出abcd
    cout<<endl;
    cout<<str<<endl;  //输出abcd
    return 0;
}

  

  也可以用字符数组存放字符串:

    char str[7];

  声明一个字符数组时,有不同的初始化方法。

  1. 逐个字符对数组元素赋初值:  

    char str1[7] = { 'S','t','u','d','e','n','t' };

  这种方式的初始化不会添加 '\0'。

  2. 用串常量初始,会自动添加结束标志符 '\0' 。

    char str2[8] = { "Stuent" };

    char str3[] = { "Stuent" };

 

或者省略 { };

    char str3[8] =  "Stuent" ;

  一个一维数组可以存放一个字符串,二维数组可以对串进行管理,例如:

    char strs[10][20];  //表示可以存放10个长度为20的字符串

  如果改用指针数组,就不必限制每个串的长度,例如:

    char* name[5]  = { "Cheng","Li","Zhang","Huang","He"};

    注意:char *s=”string”的内容是不可以改的;char s[10]=”string”的内容是可以改的

      char类型用于定义一个字符,存储一个字符,占一个字节;字符型数据为一对单引号相括的一个字符。例:char = 'A'; //定义一个字符'A'。

        补充:对于一些常见的控制符,c++用简洁的转义符代替。例如:换行表示为 ‘/n’。

                             为了表示已经用作语义符的符号如  \  , ‘  ,” 等,要添加 \ 转义:‘  \\  ’      ‘  \’  ’     ‘  \"  ’

        利用cin流输入字符串时,c++把键盘操作的空格或回车都视为串结束,因此无法输入带空格的字符串。

        c语言的gets接受键盘输入的空格,以回车作为结束。函数puts输出字符串。

        函数gets 和puts在stdio.h中声明。

二、c++中的string

1、string 是c++封装好的一个类,包含多个成员函数,可以实现字符串的各种操作

string str1 = "My string object";

2、转化:  

当 string 直接转化成 const char *时,可以通过两个函数c_str(),data成员函数,例如:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    string s="xiaoming";
    const char *a=s.c_str();//去掉const会显示编译错误
    const char *b=s.data();
    printf("a:[%s],b:[%s]\n",a,b);
}

将char *转化成string,直接转化就可以。就是注意输出的问题:

#include<iostream>
#include<stdio.h>
using namespace std;
int main()
{
    char *a="xiaoming";
    string s;
    s=a;
    printf("%s\n",s.c_str());
}

  

 

原文链接: https://www.cnblogs.com/LXJ-YZ/p/13158813.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C/C++中string与char的区别

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/199072

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月12日 下午8:02
下一篇 2023年2月12日 下午8:02

相关推荐