实验二 C++编程练习(1)
在moos-ivp的第二个实验中,主要任务是在linux系统中进行C++的编程练习。
前言
主要记录一些关于vim的相关操作以及linux中C++的相关程序实验。
一、程序实验内容
1.hello word
基本上所有C++实验的第一步都是构建一个hello world文件,此次实验当然也不例外。
1.先创建一个文档用来编辑,使用
vim hello.cpp
即可创建一个编程文档
输入以下内容进行测试:
0 // Code example from: http://www.cplusplus.com/doc/tutorial/program_structure/
1 // my first program in C++
2 #include <iostream>
3
4 using namespace std;
5
6 int main ()
7 {
8 cout << "Hello World!" << endl;
9 return 0;
10 }
2.对内容进行编译,生成执行文件:
g++ -o hello hello.cpp
此命令含义为使用g++对hello.cpp文件进行编译,生成的执行文件命名为hello
3.使用执行文件
./hello
./的意思是在当前目录下,命令的意思即为查找当前目录下的hello文件并执行。将会输出一下结果:
2.命令行参数
接下来,我们对以上代码进行一下升级,使得命令行可以对此进行参数传递。
1.编辑一个新的cpp文件,命名为hello_arg.cpp
vim hello_arg.cpp
2.输入以下参考代码
1 // Handling command line arguments
2
3 #include <iostream>
4 using namespace std;
5
6 int main (int argc, char **argv)
7 {
8 cout << "Total number of arguments: " << argc << endl;
9 cout << "The first argument is: " << argv[0] << endl;
10 return 0;
11 }
3.编译执行
g++ -o hello arg hello arg.cpp
4.测试代码正常会输出以下结果
The first argument is:./hello_arg
5.对代码进行修改使得有以下返回结果
./hello_arg Greetings!
Greetings!
6.将程序更改为以下内容即可实现`
#include<iostream>
using namespace std;
int main (int argc,char ** argv)
{
cout << argv[1] << endl;
return 0;
}
7.解析
要搞清楚如何实现,搞清楚main的参数是什么意义即可。
argc、argv的具体含义 :
argc和argv参数在用命令行编译程序时有用。main( int argc, char* argv[]) 中
第一个参数,int型的argc,为整型,用来统计程序运行时发送给main函数的命令行参数的个数,在VS中默认值为1。
第二个参数,char型的argv[],为字符串数组,用来存放指向的字符串参数的指针数组,每一个元素指向一个参数。char**argv和char argv[]含义相同。各成员含义如下:
argv[0]指向程序运行的全路径名
argv[1]指向在DOS命令行中执行程序名后的第一个字符串
argv[2]指向执行程序名后的第二个字符串
argv[3]指向执行程序名后的第三个字符串
argv[argc]为NULL
所以很简单,根据以上解释只要把输出的内容修改为argv[1]即可。
3.变量和数据类型
1.编辑一个新的cpp文件,命名为hello_arg.cpp
vim var_types.cpp
2.输入以下参考代码
3 #include <iostream>
4 using namespace std;
5
6 int main ()
7 {
8 // declaring variables:
9 int a, b;
10 int result;
11
12 // process:
13 a = 5;
14 b = 2;
15 a = a + 1;
16 result = a - b;
17
18 // print out the result:
19 cout << result << endl;
20
21 // terminate the program:
22 return 0;
23 }
3.编译执行
root@ubuntu:~# vim var_types.cpp
root@ubuntu:~# g++ -o var_types var_types.cpp
root@ubuntu:~# ./var_types
4
4.根据实验要求进行修改
要求:从命令行输入两个数值,返回结果为两个数值相加的结果
#include<iostream>
#include<cstdlib>
using namespace std;
int main(int argc,char **argv)
{
int a,b;
int result;
a = atoi(argv[1]);
b = atoi(argv[2]);
result = a + b;
cout << result << endl;
return 0;
}
可以得到结果:
root@ubuntu:~# ./var_types 12 44
56
5.解析
主要涉及的是atoi函数的使用,如果想要在linux系统中查询该函数的具体信息,可以通过
man atoi
atoi包含在头文件cstdlib中,所以需要先添加头文件在进行使用。该函数具体作用为:
atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数,应用在计算机程序和办公软件中。int atoi(const char *nptr) 函数会扫描参数 nptr字符串,会跳过前面的空白字符(例如空格,tab缩进)等。如果 nptr不能转换成 int 或者 nptr为空字符串,那么将返回 0 [1] 。特别注意,该函数要求被转换的字符串是按十进制数理解的。atoi输入的字符串对应数字存在大小限制(与int类型大小有关),若其过大可能报错-1。