📅  最后修改于: 2023-12-03 14:59:49.484000             🧑  作者: Mango
C++ 程序的输出是程序员日常开发中必备的能力之一,通过输出程序可以检测程序运行的正确性,也可以方便地了解程序的运行情况。在下面的内容中,我将为大家介绍23套有关C++程序输出方面的内容。
首先,我们来看C++中最基本的输出方式:
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
输出结果为:
Hello, World!
其中,std::
是用于指定cout
和endl
的命名空间,<<
表示将其左边的内容输出到右边的流中,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::fixed
和std::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 = #
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++中,我们可以使用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++默认输出和支持多语言输出等。通过这些方法,我们可以灵活自如地输出我们需要的结果。