c++笔记1

今天写c++,碰到了两个很蛋疼的问题:

 

1. 你在声明数组的大小时,一定要给确切的值

如char str[size],这在编译的时候会通过,但执行的时候g++总是告诉我段错误。

 

2.如果你确实想动态分配数组大小,可以用new

char* str = new char[size] ;

 

但记住:不要在switch的分支语言里,写上这句,不然,编译都通过不了。

如:

 switch(code){

  case 1:

   .........;

   break;

  ..........

  case i:

    char* str = new char[size] ;

   break;

  ............

  default:

   break;

 

}

 

g++会提示你:crosses initialization of ‘char*

具体的讨论见这个帖子:http://topic.csdn.net/t/20040816/15/3279290.html

 

3. c++ string 

原来string的+操作符是不能连接除字符串之外的数据类型(int,float,char,.......):

这意味着你不能写 成下面这样:

string str = 'bug:' ;

str += 10000;

 如果实在想连Int之类的数据类型,您还得转换为字符串,如sprintf等


如果你想连接char:

不好意思,你得这样连:

char c = 's';

string cc(1,c) ;// 第一个参数为字符的长度

str += cc ;


如果你想像java里面使用string的加号,如

str += aa + gg +cc+ '''‘’‘’‘’;

不好意思,c++不让您这么轻松,您这等号后面的待连接变量,至少得有一个显示为string类型

如:str += aa + string(gg) +cc + ‘’‘’‘’;

即使都是字符串也不行哦:如:str += "aa"+"aa"+"aa"+"aa"+"aa" ;

您得这样:str += "aa"+string("aa")+"aa"+"aa"+"aa" ;

蛋疼把


4. sstream的使用

哥开始把它当作类似fstream之类的,只要跟某个字符串绑定后,就可以不断往字符串里写


其实,哥错来,这玩意只是用来数据类型转换用的,别太稀罕它了 

11      string result ;
 12     stringstream ss;
 13     ss<<"hello world";
 14     ss>>result;
 15     cout<

您知道输出的是什么不,只有hello!!!!!!

why???????????

明显空格之类的特殊符号被看作了结束符,真坑爹!!

你可能感兴趣的:(c++,c++,string,initialization,float,java,语言)