您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页C++输入&输出

C++输入&输出

来源:华佗小知识

一、Hello World!

学习了C语言之后,我们可以编写代码向这个世界打招呼。

#include <stdio.h>
int main()
{
    printf("Hello World!\n");
    return 0;
}

新生婴儿会以自己独特的方式向这个崭新的世界打招呼,C++刚出来后,也算是一个新事物,那C++是否也应该向这个美好的世界来声问候呢?

我们来看下C++是如何来实现问候的。

#include<iostream>
using namespace std;
int main()
{
	cout << "Hello world!" << endl;
	return 0;
}

二、C++的输入输出相关解释

【1】使用cout标准输出(控制台)cin标准输入(键盘)时,必须包含<iostream>头文件以及按命名空间使用方法使用std

【2】使用C++输入输出更方便,不需要像printf()、scanf()输入输出时那样,需要手动控制格式。C++的输入输出可以自动识别变量类型。

#include<iostream>
using namespace std;

int main()
{
	const char* str = "hello bit";
	cout << str << endl;  // 自动识别变量类型
	
	int i = 1;
	double d = 1.11;
	cout << i << d << endl;  // 自动识别变量类型
                             // 小数点有多少位,cout就输出多少位
	cin >> i >> d;  // 不需要像C语言一样使用取地址操作符&
	cout << i << d << endl;
	return 0;
}

Note:

cin、cout与printf()、scanf()各有所长,cin、cout虽然可以自动识别类型,但是printf()、scanf()在某些场景下使用起来却比cin、cout更方便。

#include<iostream>
using namespace std;

struct Student
{
	char name[20];
	int age;
	//...
};
int main()
{
	struct Student s = { "张三",18 };
	// CPP
	cout << "姓名:" << s.name << endl;
	cout << "年龄:" << s.age << endl << endl; // CPP的cout不方便,一项一项写很麻烦
	// C
	printf("姓名:%s\n年龄:%d\n\n", s.name, s.age);  //写结构体时,C语言的printf更方便,仅一行代码搞定
	return 0;
}

三、std命名空间的使用惯例

std是C++标准库的命名空间,如何展开std使用更合理呢?

我们经常看到一下三种写法:

写法1:使用using namespace 命名空间名称引入

#include <iostream>
using namespace std;

int main()
{
	cout << "hello world!" << endl;
	return 0;
}

命名空间全部展开,用起来虽然极其方便,但是隔离彻底失效了。这种方式建议大家慎用。

写法2:使用using将命名空间中成员引入

#include <iostream>
using std::cout;
using std::endl;

int main()
{
	cout << "hello world" << endl;
	return 0;
}

该方式可以用于展开std命名空间中常用的成员,还保有较好的隔离效果。

写法3:加命名空间名称及作用域限定符

#include <iostream>

int main()
{
	std::cout << "hello world" << std::endl;
	return 0;
}

该方式能够做到最好的命名隔离,但是使用不方便,每次都需要指定域。

Note:

①在日常练习中,建议直接using namespace std即可,这样就很方便。

②using namespace std展开,标准库就全部暴露出来了,如果我们定义跟库重名的类型/对象/函数,就存在冲突问题。虽然这个问题在日常练习中很少出现,但是代码较多、规模大的项目开发中就很容易出现冲突问题。所以建议在项目开发中,使用std::cout这样使用指定命名空间或者using std::cout这样展开常用的库对象/类型等方式。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务