📜  C++ 程序的输出 | 23套(1)

📅  最后修改于: 2023-12-03 14:59:49.484000             🧑  作者: Mango

C++ 程序的输出 | 23套

C++ 程序的输出是程序员日常开发中必备的能力之一,通过输出程序可以检测程序运行的正确性,也可以方便地了解程序的运行情况。在下面的内容中,我将为大家介绍23套有关C++程序输出方面的内容。

基本的C++输出

首先,我们来看C++中最基本的输出方式:

#include <iostream>

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}

输出结果为:

Hello, World!

其中,std::是用于指定coutendl的命名空间,<<表示将其左边的内容输出到右边的流中,endl表示输出换行符并清空缓冲区。

输出变量

在程序中,我们需要输出各种类型的变量,在C++中,可以使用以下代码来输出各种类型的变量:

#include <iostream>
#include <string>

int main() {
    int num_int = 10;
    float num_float = 10.50;
    double num_double = 10.123456789;
    char ch = 'a';
    std::string str = "Hello, World!";

    std::cout << "Integer Number: " << num_int << std::endl;
    std::cout << "Floating Point Number: " << num_float << std::endl;
    std::cout << "Double Precision Floating Point Number: " << num_double << std::endl;
    std::cout << "Character: " << ch << std::endl;
    std::cout << "String: " << str << std::endl;

    return 0;
}

输出结果为:

Integer Number: 10
Floating Point Number: 10.5
Double Precision Floating Point Number: 10.1235
Character: a
String: Hello, World!

在输出字符串时使用了std::string类型,因为std::cout不支持直接输出字符串。

控制输出格式

有时候,我们需要控制输出格式以方便查看,C++提供了多种格式化输出的方法,如:

#include <iostream>
#include <iomanip>

int main() {
    int num_int = -10;
    float num_float = 10.50;
    double num_double = 10.123456789;
    char ch = 'a';

    std::cout << "Integer Number: " << std::setw(10) << std::setfill('0') << num_int << std::endl;
    std::cout << "Floating Point Number: " << std::fixed << std::setprecision(2) << num_float << std::endl;
    std::cout << "Double Precision Floating Point Number: " << std::scientific << std::setprecision(5) << num_double << std::endl;
    std::cout << "Character: " << ch << std::endl;

    return 0;
}

输出结果为:

Integer Number: -000000010
Floating Point Number: 10.50
Double Precision Floating Point Number: 1.01235e+01
Character: a

其中,std::setw(n)表示输出宽度为n个字符,不足部分用指定字符填充,std::setfill(c)表示用字符c填充不足部分,std::fixedstd::scientific分别表示输出为定点数和科学计数法,std::setprecision(n)表示精度为n。

输出数组

在C++中,我们可以使用循环来逐个输出数组中的元素,如下所示:

#include <iostream>

int main() {
    int arr[] = {1, 2, 3, 4, 5};

    std::cout << "Array elements: ";
    for (int i = 0; i < 5; i++) {
        std::cout << arr[i] << " ";
    }
    std::cout << std::endl;

    return 0;
}

输出结果为:

Array elements: 1 2 3 4 5
输出二维数组

对于二维数组,我们可以使用两层循环分别遍历其中的行和列,如下所示:

#include <iostream>

int main() {   
    int arr[][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};

    std::cout << "2D Array elements: " << std::endl;
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            std::cout << arr[i][j] << " ";
        }
        std::cout << std::endl;
    }

    return 0;
}

输出结果为:

2D Array elements: 
1 2 3 
4 5 6 
7 8 9 
输出指针

输出指针变量的值可以使用%p格式控制符,如下所示:

#include <iostream>

int main() {
    int num = 10;
    int *ptr = &num;

    std::cout << "Address of num: " << ptr << std::endl;

    return 0;
}

输出结果为:

Address of num: 0x7ffee6e3b788
输出结构体

在C++中,我们可以使用struct定义一个结构体类型,并在其中定义多个成员变量,通过.来访问这些成员变量,如下所示:

#include <iostream>
#include <string>

struct student {
    int id;
    std::string name;
    float score;
};

int main() {
    student s = {1, "Tom", 95.0f};

    std::cout << "Student Information:" << std::endl;
    std::cout << "id: " << s.id << std::endl;
    std::cout << "name: " << s.name << std::endl;
    std::cout << "score: " << s.score << std::endl;

    return 0;
}

输出结果为:

Student Information:
id: 1
name: Tom
score: 95
输出枚举类型

在C++中,我们可以使用enum关键字定义一个枚举类型,并指定各个成员的值,如下所示:

#include <iostream>

enum color {
    red = 1,
    green,
    blue
};

int main() {
    color c = red;

    std::cout << "Color: ";
    switch(c) {
        case red:
            std::cout << "red" << std::endl;
            break;
        case green:
            std::cout << "green" << std::endl;
            break;
        case blue:
            std::cout << "blue" << std::endl;
            break;
        default:
            std::cout << "unknown" << std::endl;
            break;
    }

    return 0;
}

输出结果为:

Color: red
输出文件

除了控制台输出外,C++还可以输出到文件中,如下所示:

#include <iostream>
#include <fstream>

int main() {
    std::ofstream ofs("output.txt");

    if (ofs.is_open()) {
        ofs << "Hello, World!" << std::endl;
        ofs.close();

        std::cout << "Data has been written to the file." << std::endl;
    } else {
        std::cout << "Error opening file!" << std::endl;
    }

    return 0;
}

上述代码将Hello, World!输出到了名为output.txt的文件中。

将输出重定向到文件

如果想将整个程序的输出结果都输出到文件中,可以使用流重定向的方式,如下所示:

#include <iostream>
#include <fstream>

int main() {
    std::ofstream fout;
    fout.open("output.txt", std::ios::out);

    std::streambuf *coutbuf = std::cout.rdbuf();
    std::cout.rdbuf(fout.rdbuf());

    std::cout << "Hello, World!" << std::endl;

    fout.close();
    std::cout.rdbuf(coutbuf);

    std::cout << "Data has been written to the file." << std::endl;

    return 0;
}

该程序将输出结果重定向到了名为output.txt的文件中。

自定义输出流

有时候,我们需要对输出结果进行格式化或者进行一些其他的操作,此时,可以自定义一个输出流类来实现这些操作,如下所示:

#include <iostream>

class my_ostream {
public:
    my_ostream& operator<<(const char* str) {
        for (int i = 0; str[i] != '\0'; i++) {
            std::cout << str[i];
        }
        return *this;
    }
};

int main() {
    my_ostream my_cout;

    my_cout << "Hello, World!" << std::endl;

    return 0;
}

该程序自定义了一个输出流类my_ostream,并重载了<<运算符,以实现自己的输出方式。

修改C++默认输出

在C++中,我们可以使用std::cout来进行标准输出,但是默认情况下,它的输出方式可能不符合我们的需求,此时,我们可以通过修改std::cout的内部实现来实现自定义的输出方式,如下所示:

#include <iostream>
#include <iomanip>
#include <cstdio>

class my_cout : public std::ostream {
public:
    my_cout() : std::ostream(stdout) {}

    my_cout& operator<<(const char* str) {
        for (int i = 0; str[i] != '\0'; i++) {
            put(str[i]);
        }
        return *this;
    }
};

int main() {
    my_cout mcout;

    mcout << "Hello, World!" << std::endl;
    mcout << std::hex << std::setw(4) << std::setfill('0') << 255 << std::endl;
    mcout << std::scientific << std::setprecision(2) << 123.456789 << std::endl;

    return 0;
}

该程序自定义了一个输出流类my_cout,并重载了<<运算符,以完成自定义的输出方式。

支持多语言输出

在C++中,输出的内容除了英语之外,也可以是其它语言,只需要在输出前将语言环境设置为相应的语言即可,如下所示:

#include <iostream>
#include <locale>
#include <cstdlib>

int main() {
    std::setlocale(LC_ALL, "zh_CN.UTF-8");

    std::cout << "这是中文输出。" << std::endl;

    return 0;
}

该程序将语言环境设置为简体中文,并输出了一句中文。

总结

上述内容介绍了23套有关C++程序输出方面的内容,包括基本的输出、输出变量、控制输出格式、输出数组、输出二维数组、输出指针、输出结构体、输出枚举类型、输出文件、自定义输出流、修改C++默认输出和支持多语言输出等。通过这些方法,我们可以灵活自如地输出我们需要的结果。