开发者社区> 问答> 正文

C++中字符常量有什么用?

刚学C++,看书上说几种常量,数值常量我能理解,PI是个好例子。但是字符常量又要作何解?转义字符这个倒还好理解,有个实际用处单独定义出来。但是还有普通的字符常量,这个我就非常理解不能了,请问大家能不能给个例子证明这个有什么用?而且只能单引号什么的其实也挺纠结的。
另外,C++是不是强语言,每个变量都必须定义类型什么的?没办法,从PHP转过去的,挺纠结这些基本问题的╮(╯▽╰)╭...
再来就是定义字符串常量查到好几种方法:

include

string url = "segmentfault.com";
const char url[] = "segmentfault.com";
const char *url = "segmentfault.com";
const char* url = "segmentfault.com";
请问哪个好点?另外最后两个的*号做何解...新手问题还望大家要淡定,别凌乱就好。。。。

展开
收起
a123456678 2016-03-09 18:37:15 2874 0
1 条回答
写回答
取消 提交回答
  • 先说说这几个例子的区别吧:
    1、

    include

    string url = “segmentfault.com”;
    url是一个string对象。为了更加容易地操纵字符串,cpp为我们定义了一个string类(string并不是cpp的关键字),你可以通过它来定义字符串对象,然后通过调用它的方法来获取该字符串的信息,例如获取它的长度:
    url.length()
    又或者对它进行操纵,例如拼接:

    string scheme = “http://
    cout << scheme+url << endl; //输出http://segmentfault
    2、
    下面的三种写法都可以看作是一种:

    const char* url = “segmentfault”;
    因为 const char url[](字符数组),数组名url在编译时会被隐式转为为指针char,指向字符串的首个字符's'。至于号的位置,有人喜欢把它放到靠近类型,有人喜欢把它放到靠近变量名,这里有一个关于这个问题讨论的topic

    http://topic.csdn.net/u/20101117/10/f...

    又因为是常量字符串,所以你不能对它进行修改

    url[0]='x';//错误,不可以进行修改,就算没有用const来修饰,也不可以
    但是在string中却可以

    string url = “segmentfault.com”;
    url[0] = 'x';//OK
    这是因为string为我们承担了管理内存的任务。如果你想要对它进行拼接,你需要自己写一个函数,又或者调用cstring库中的strcat或strncat函数。

    在c/cpp中,有两种作用,一种是用来定义指针类型,char 就是字符指针。另外一种就是取值,取指针指向的值,想上面所说的

    const char *url = “segmentfault”;
    url是指向字符串的首个字符,所以你对指针url取值,得到的就是字符's'

    cout << *url << endl;//输出's'
    所以,总的来说,string用起来会比较方便,常量字符串在操纵起来就有点麻烦,也可以说是灵活吧,什么时候用哪个,就需要你自己衡量了。至于性能上,我想我还没有能力来分析!

    2019-07-17 18:56:33
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载