c++ 学习笔记-01
我一直认为我的意志力和执行了还算可以滴,但是对于写工作日记这件事我一直都是拖起,没有一点点积极性。以前很多学习的新知识当时是明白了可是却没有做笔记,以后想复习复习都不知道从何做起。所以现在要强迫自己明天把学到的知识做一个总结,刚好这段时间学习c++,就把学习的一点点经验保留下来。
c++对我来说有点陌生,只是在大二的时候学过一个学期,也不是学的很好,后来就开始着手学习c#,当时感觉c#比c++方便多了,这才是代表先进的生产了。在读研期间参与过用C#开发的一些商业项目,还是学到不少东西。再后来开始接触移动互联网开发,又要学习Java,虽然没有学习过Java,但是C#和Java很像的,上手也是很快。上个学期找工作却应聘到一个C++开发的岗位,唉,只好又要开始学习C++,现在看C++是各种不适应啊,没有办法,为了工作,就要坚持下去。
闲话少说,言归正传。公司给了我们一个帐号和密码,让我们做一些编程题来训练。有一部分是让输入几行数据,然后在分别处理这些数据。刚开始用了一个很笨的方法来保存没一行数据,方法如下:
1 char strInput[MAX_SIZE][MAX_SIZE]; 2 int i=0; 3 while(cin.getline(strInput[i],Max_LENTH)) 4 { 5 if (strlen(strInput[i])>100) 6 { 7 exit(0); 8 } 9 else 10 { 11 if(strcmp(strInput[i],"0")!=0) 12 { 13 i++; 14 } 15 else 16 break; 17 } 18 }
1 string strTemp; 2 3 vector<string> vecInput; 4 for(int i=0;i<3;i++) 5 { 6 cin>>strTemp; 7 vecInput.push_back(strTemp); 8 }
对于vector不是很熟悉,就上网查了相关使用教程,详细使用参考 http://blog.csdn.net/pandy1110/article/details/5963908。
另外还有一道题是关于删除嵌套注释,当时看到题目有点不知道如何下手,我就整理了一下思路:
1.判断是否有注释
2.找到注释的起始位置,我是用字符串查找函数来实现的,要用的find()和rfind()函数。
1 string::size_type low=str.find("/*"); //从左向右查找第一个出现“/×”的位置 2 string::size_type high=str.rfind("*/");//从右向左查找第一出线“×/”的位置
3.删除low 和high之间出现的“/×”和“×/”,这就又要用的字符串删除函数erase(),使用方法
语法: iterator erase( iterator pos );
iterator erase( iterator start, iterator end );
basic_string &erase( size_type index = 0, size_type num = npos );
erase()函数可以:
删除pos指向的字符, 返回指向下一个字符的迭代器,
删除从start到end的所有字符, 返回一个迭代器,指向被删除的最后一个字符的下一个位置
删除从index索引开始的num个字符, 返回*this.
对于string,两个参数是:index从字符串第index位置开始删除,num是要删除字符个数。