高效编程之充分运用软件: VS C++ 查找与替换
前言:本人是个小菜鸡,计算机专业大一学生,由于没什么基础,一切得一点点学起,可能对于某些大神,看了这篇文章可能会想:切,这都不知道。但我想,总有人会不知道。就让我记录吧,也许有人会有需要呢?另外有大佬有更好解决问题的方法也欢迎指教。
问题来源
最近在学c++的类,学校的OJ练习是创建各种类实现各种功能。
要求创建的类们挺有趣,比如:
有兴趣的同学可以做一做,我在文末附上了题目的主函数和输出。
再如:
可是,一题一题做下来有个问题,一旦做完一题要做下一个题时会有新的类,有新的类名,在一个个把定义时的类名,构造函数的类名,析构函数的类名改了两三次后,我觉得这样实在是太愚蠢了,就探寻有没有什么好的解决方法。
于是,我想到了学Word
的时候有查找和替换,可以一下子把所有的A都改成B,vs c++作为一个类文本编辑器,没准也会有,没错,就是它!然后果然也在vs c++里找到了查找和替换。生活总是这么机缘巧合,所以有时要学会联想与类比,我认为对于自己的理解能力是有用的。
解决方法
可以在编辑
里找到查找和替换
,也可以快捷键ctrl + H
快速开启,接下来在第一行输入自己想查找的对象,在第二行输入替换的内容。如下所示。
接下来按Enter
或者Alt+A
就可以进行替换了,如果需要全部替换,可以直接Alt+R
,不过全部替换时要保证要替换后不会影响到其他代码的内容。
比如,如果我们把以上代码中的变量w
替换掉时,如果全部替换的话,那么凡是w
都会被替换,这时如果主函数中有一个while循环
语句就会造成麻烦,所以要小心。要跳过某一个内容的替换可以按F3
查找下一个,回去可以按Shift + F3
。
当然,最直接的解决方法是起一个完整表示变量含义的名字,在此是我偷懒了,用w
代替weight
。
思考
进而言之,回到最初,如果起一个简单的类名,并在整个练习中从头用到尾,把主函数稍微改一下不就没那么麻烦了吗?
确实,如果在8个练习中只用一个类名确实可以省不少麻烦,但是有些事情没有对与不对
,只有好与不好
,这么做可以,但是不好。这样会帮助我们养成偷懒的坏习惯,平时不写注释就算了,取变量名还这么随便,别说别人看不懂你的代码,就算是自己过阵子回来看自己写的代码也不知道是什么东西。
老师常说,代码是写给人看的,你的代码人看不懂,又有什么价值呢?现在刷题能过就行,但以后出去工作很多都是团队工作,听说不写注释的程序员是会被唾沫淹死的。一个好的变量名、函数名、类名也就相当于注释了,好的习惯要从小 一年级 大一养起。(我们c++老师总是很宽容地说我们是一年级,很多东西可以慢慢理解)
最后,如果取变量名有点头疼,换而言之是词汇量不过硬,这里有一个网站可供你查询:CODELF。
如果我的记录对你有些许帮助,点个赞让我知道吧!🙂
附题 有关知识:对象指针
题1
//把代码补充完整,以实现要求的输出。
//主函数如下:
int main()
{
Goat *g1 = new Goat("Pretty Goat", 47);
Goat *g2 = new Goat("Warm Goat", 60);
Wolf *w1 = new Wolf("Wilie", 50);
print(g1);
print(g2);
print(w1);
g2->sleep();
w1->eat(g1);
print(g2);
print(w1);
return 0;
}
//输出
Pretty Goat is a goat that weights 47 kg.
Warm Goat is a goat that weights 60 kg.
Wilie is a wolf that weights 50 kg.
Warm Goat has a good sleep, increasing 2 kg.
Wilie eats Pretty Goat, increasing 47 kg.
Warm Goat is a goat that weights 62 kg.
Wilie is a wolf that weights 97 kg.
题2
//Tom猫和Garfield猫打起来了。
//把代码补充完整,以实现要求的输出。
//主函数如下:
int main()
{
Cat c1("Tom", 100, 10), c2("Garfield", 50, 20);
while (c1.isAlive() && c2.isAlive())
{
c1.showIntro();
c2.showIntro();
cout << "**********" << endl;
c1.attack(c2);
if (!c2.isAlive())
break;
c2.attack(c1);
cout << "----------" << endl;
}
return 0;
}
//输出
tip:注意最后一行输出的实现
Tom HP: 100 ATTACK: 10
Garfield HP: 50 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 80 ATTACK: 10
Garfield HP: 40 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 60 ATTACK: 10
Garfield HP: 30 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 40 ATTACK: 10
Garfield HP: 20 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield attacks Tom. Tom receives 20 damage.
----------
Tom HP: 20 ATTACK: 10
Garfield HP: 10 ATTACK: 20
**********
Tom attacks Garfield. Garfield receives 10 damage.
Garfield is destroyed.