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     }
这种方法也能实现题目的要求,使用一个二维数组来保存每一行字符串。后来我在想能不能用一个一维字符串数组来保存数据,就在网上查找一下相关信息,有的网友建议用vector来处理字符串,方法如下:
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是要删除字符个数。


 
原文地址:https://www.cnblogs.com/lemonloves/p/2932646.html