c++ 学习 随笔二

来源:互联网 发布:python 接口 上传图片 编辑:程序博客网 时间:2024/06/11 20:47

1、在程序当中对string类型进行输入时,总是忽略前面的空字符,比如空格,回车,换行符等等,知道接收第一个字符开始,一直到下一个空字符,输入结束。然后getline()函数却不同,主要用于一行的输入,所以如果第一个字符就是换行符,那么getline()就会执行命令,跳到下一行,否则一直接收本行所以字符串,知道遇到最后的换行符。getline()在返回时丢弃换行符,所以字符串中没有换行符。

2、上一篇博客中写过,字符串的字面值比如“abcd”与string类型不是一样的,所以我们在使用+时对字符串,至少要保证+的左右两边有一边是string类型的。比如

string a("abcd");string b;b = a + "efgh";string c;c = "ab"+"cd";
上述表达中,b是合理的,c是不合理的。

3、同样在上一篇中提到过,有些类型在计算机中的表达格式是不一样的例如int型,同样,string也一样,那么为了解决这个问题,在标准库中定义了与相应类型配套的一些方法的值的类型。比如,在string类型中size()函数用于返回字符串的长度,此时的返回值就是size_type的,与int类型完全不同,因为size_type一定是正数,而且可以非常大,大到int

接收不了的数值,所以此时如果把size_type赋值给int类型,会产生巨大的错误。同样string的下标操作类型也是size_type;同样的还有vector也是用size_type作为配套类型;在数组当中,用size_t作为配套的类型。这一定多多理解就明白了,其实不难。size_type是unsigned的,size_t是signed。

4、说起vector就必须要提到迭代器,其实简单的来看,可以将迭代器和指针连起来记忆,因为迭代器就是由此而来,这回明白了吧!!!在同一容器的迭代器可以相减

iter1 - iter2
此时式子返回的是difference_type,是signed的,因为相减的结果可能为负,并且iter1,iter2必须为同一容器,或者指向容器最后一个元素的下一个位置。两个指针相减返回的类型是ptrdiff_t类型的。

5、const vector<int>::iterator p 和vector<int>::const_iterator q;这两个迭代器有什么不同,我刚开始学的时候,还郁闷了一阵,其实理解的const和const_iterator之后,非常容易理解。这样说,const指的是p中的内容可以修改,但是迭代器p本身不能修改,就是赋值,加1等操作都不行,因为const修饰迭代器,这一点从右像左仔细看看。而const_iterator是指元素不能修改,但是迭代器可以修改。

6、void*指针,看到过几次,但是不常用,标识什么类型的指针都可以,一般用于接收,传递等。没有什么具体的操作。

7、再来说一说数组吧,与vector不同,数组不允许直接赋值和复制。

8、最后所以说c风格的字符串吧,我对它也是无语了,最好还是用c++的string风格吧。

char a[] = {'a','b','c'};char a[] = {'a','b','c',NULL};
怎么样看明白了吗,对的,一定要在最后加上空字符结尾,第一个的长度不定,第二的长度一定为3;string类型的字符串也是默认为以空字符结尾。

0 0
原创粉丝点击