📜  格式化字符串 std::cout (1)

📅  最后修改于: 2023-12-03 15:40:28.950000             🧑  作者: Mango

格式化字符串 std::cout

在程序开发中,输出信息是非常重要的。但输出信息时,若不注意格式,会影响代码的可读性和易读性。因此,C++提供了一种非常实用的格式化字符串的方法--std::cout。

什么是std::cout?

std::cout是C++中用于标准输出的流,它在iostream库中定义。它可以支持各种不同数据类型的输出,并且可以进行格式化输出。

在使用std::cout输出字符串和数值时,我们通常会写出如下语句:

std::cout << "Hello World!\n";
std::cout << "The value of i is " << i << "\n";

上面的语句等价于:

std::cout << "Hello World!\n";
std::cout.width(20);
std::cout << "The value of i is ";
std::cout.width(0);
std::cout << i << "\n";

在这里,我们设定了一个20个字符的字段宽度,因此"The value of i is"字符串占据了20个字符(如果字符串本身长度大于20,那么就忽略宽度设定)。而且,使用“<<”操作符时,数据类型也不限于字符串和数值。

格式化输出

除了可以输出字符串和数值外,std::cout还支持C语言中printf函数使用的格式化输出。例如,下面这个语句将以十六进制格式输出一个数字:

std::cout << std::hex << num << "\n";

与printf函数使用格式化字符串相比,std::cout的格式化输出方式给力在其类型安全性。例如,printf函数参数的类型由格式化字符串来确定,很容易出现类型不一致的问题,可是在使用std::cout的时候,我们可以使用C++的类型安全功能,避免类型错误的问题。

格式化输出示例

下面的代码演示了对一个学生信息表格的格式化输出:

#include <iostream>

int main()
{
    std::cout << "Name" << std::setw(15) << "Address" << std::setw(20) << "Age" << std::setw(10) << "Gender" << std::endl;
    std::cout << "---------------" << std::setw(15) << "--------------------" << std::setw(20) << "------" << std::setw(10) << "------" << std::endl;
    std::cout << "John Smith" << std::setw(15) << "123 Main St." << std::setw(20) << "23" << std::setw(10) << "M" << std::endl;
    std::cout << "Jane Doe" << std::setw(15) << "456 Oak Ave." << std::setw(20) << "29" << std::setw(10) << "F" << std::endl;

    return 0;
}

输出结果为:

Name           Address               Age     Gender
---------------       --------------------      ------       ------
John Smith          123 Main St.            23            M
Jane Doe              456 Oak Ave.             29            F

总之,std::cout提供了很多方便的输出功能,它可以让我们轻松地输出字符串、数字、变量和自定义类型等任意数据,非常实用。同时,std::cout也具有良好的类型安全性和可读性,可以帮助我们编写出更清晰和易读的代码。