MOOS-ivp 实验二 C++编程练习(1)

实验二 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。

总结

猜你喜欢

转载自blog.csdn.net/weixin_44151170/article/details/108733231