当前位置:   article > 正文

C++中的 cout 和 printf 用法_printf cout 用哪个

printf cout 用哪个


前言

C++是一种面向对象的编程语言,它继承了C语言的特点,同时也增加了许多新的特性。在C++中的cout 和 printf是两种常用的输出函数,它们都可以将数据显示在屏幕上,但是它们也有一些区别和优缺点。本文将详细说明这两种函数的区别及格式化输出的不同实现方法。

cout & printf

cout 是C++标准库中的一个对象,它属于iostream头文件,它可以使用<<运算符将数据发送到标准输出流(一般就是屏幕)。cout 的优点是可以直接输出各种类型的数据,不需要指定格式符,而且可以重载<<运算符来自定义输出方式。cout 的缺点是输出速度较慢,而且不能控制输出的精度和宽度。

printf 是C语言中的一个函数,它属于stdio.h头文件,它可以使用格式化字符串将数据发送到标准输出流。printf 的优点是输出速度较快,而且可以使用各种格式符来控制输出的精度和宽度,例如%.2f表示保留两位小数,%10d表示占用10个字符的整数。printf 的缺点是需要指定格式符,而且不能直接输出C++中的一些类型,例如string和bool,需要进行类型转换或者使用其他函数。

为了实现格式化输出,cout 和 printf 有不同的方法。cout 可以使用一些控制符来修改输出流的状态,如setprecision, setw, left, right, fixed, scientific等。这些控制符可以用<<运算符连接在cout 后面,也可以用cout.setf函数来设置。

example

格式化输出是指按照一定的规则和要求将数据显示在屏幕上,例如保留小数位数,对齐方式,补充空格等。cout 和 printf都可以实现格式化输出,但是方法不同。cout 可以使用一些控制符来实现格式化输出,例如setprecision(n)表示保留n位小数,setw(n)表示占用n个字符,left表示左对齐,right表示右对齐等。这些控制符需要包含iomanip头文件,并且使用<<运算符与cout 连接。例如:

#include <iostream>
#include <iomanip>

using namespace std;
int main(){

    double x = 3.14159;
    cout << setprecision(3) << x << endl; // 输出3.14
    cout << setw(10) << x << endl;        // 输出     3.14159
    cout << left << setw(10) << x << endl; // 输出3.14159
    cout << right << setw(10) << x << endl; // 输出     3.14159
    return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

printf 可以使用格式化字符串来实现格式化输出,格式化字符串由普通字符和格式符组成,普通字符原样输出,格式符用来指定数据的类型和格式。格式符的一般形式为%[标志][宽度][.精度][长度]类型。例如:

#include <stdio.h>

int main(){

	double pi = 3.1415926;
	printf("pi = %f\n", pi); //默认输出
	printf("pi = %.3f\n", pi); //设置精度为3
	printf("pi = %10f\n", pi); //设置宽度为10
	printf("pi = %-10f\n", pi); //设置左对齐
	printf("pi = %10.3f\n", pi); //设置宽度为10,精度为3
	printf("pi = %e\n", pi); //设置科学计数法
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

printf输出string字符串

C++中的string类型是一个类,它封装了一些字符串操作的方法。如果要用printf输出string类型的字符串,需要先将其转换为C风格的字符串,即以’\0’结尾的字符数组。有两种方法可以实现这种转换:

  • 使用string类的c_str()方法,它会返回一个const char*指针,指向string对象内部存储的字符串。例如:
#include <iostream>
#include <string>
using namespace std;

int main()
{
string s = "Hello, world!";
printf("%s\n", s.c_str()); // 输出Hello, world!
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 使用string类的data()方法,它也会返回一个const char*指针,指向string对象内部存储的字符串。但是,这个指针不一定以’\0’结尾,所以需要额外指定输出的长度。例如:
#include <iostream>
#include <string>
using namespace std;

int main()
{
string s = "Hello, world!";
printf("%.*s\n", s.size(), s.data()); // 输出Hello, world!
return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

总结

cout 和 printf 都是C++中常用的输出方式,它们各有优缺点,具体使用哪一种要根据实际情况和需求来选择。在一般情况下,如果不需要高效或精确地控制输出格式,可以使用cout 来简化编程;如果需要高效或精确地控制输出格式,可以使用printf 来提高性能。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/347456
推荐阅读
相关标签
  

闽ICP备14008679号