码迷,mamicode.com
首页 > 其他好文 > 详细

奇怪的string

时间:2014-10-31 09:53:48      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   io   color   os   ar   使用   sp   文件   

代码1:

 1 #include <iostream>
 2 //#include <string>
 3 using namespace std;
 4 
 5 int main(int argc, char **argv)
 6 {
 7     string s = "hello world!";
 8     //cout << s << endl;
 9     return 0;
10 }

这段代码仅仅是定义了string,而没有使用它,可以编译通过,正常运行。推测原因是:间接包含了string的定义,因此仅仅用来定义是可以的,但是有点讲不通的是,一般这种类似于预定义的情况,只能定义该类型的指针或者引用。不能定义它本身的变量的。所以,此处是疑问1.

代码2:

 1 #include <iostream>
 2 //#include <string>
 3 using namespace std;
 4 
 5 int main(int argc, char **argv)
 6 {
 7     string s = "hello world!";
 8     cout << s << endl;
 9     return 0;
10 }

这段代码编译不过。我的理解是,使用了此变量,但是没哟包含头文件,所以编译不过很合理,但是结合下一段代码来看,就有点奇怪了。

代码3:

 1 #include <iostream>
 2 //#include <string>
 3 using namespace std;
 4 
 5 int main(int argc, char **argv)
 6 {
 7     string s = "hello world!";
 8     cout << s.c_str() << endl;
 9     return 0;
10 }

这段代码可以编译过并正常执行。这里与上一段代码唯一的区别就是输出时先将string转换为了字符串类型。这里是疑问2.

代码4:

 1 #include <iostream>
 2 #include <string>
 3 using namespace std;
 4 
 5 int main(int argc, char **argv)
 6 {
 7     string s = "hello world!";
 8     cout << s << endl;
 9     return 0;
10 }

这段代码可以编译通过并正常执行。这里结果也是在意料之中的。

 

综合上面的几种情况,对string的使用还是有一些疑问的,虽然不影响正常使用,但是还是喜欢钻一钻这个问题,打破砂锅问到底。现在自己的知识还解释不了这个问题,只能待自己慢慢积累了。

 

加油吧,少年!

奇怪的string

标签:style   blog   io   color   os   ar   使用   sp   文件   

原文地址:http://www.cnblogs.com/lit10050528/p/4064202.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!