std::cout 格式化输出
时间: 2023-11-17 18:03:15 浏览: 56
std::cout是C++中标准输出流对象,可以使用控制符和成员函数来格式化输出。例如,可以使用控制符fixed和scientific来控制浮点数的输出格式,使用控制符dec、hex和oct来控制整数的输出格式。同时,也可以使用成员函数precision来控制浮点数的小数位数,使用成员函数width来控制输出字段的宽度。下面是一个例子:
```c++
#include <iostream>
#include <iomanip>
int main() {
double x = 0.001234567;
double y = 1.946e9;
std::cout << std::fixed << std::setprecision(6) << x << std::endl; // 控制小数位数为6
std::cout << std::scientific << y << std::endl; // 科学计数法输出
std::cout << std::dec << std::setw(10) << std::setfill('0') << 123 << std::endl; // 控制输出字段宽度和填充字符
return 0;
}
```
相关问题
std::cout 和printf
std::cout和printf都是用于输出的函数,但是它们有一些不同之处。std::cout是C++标准库中的一个输出流对象,使用时需要加上std::前缀,而printf是C语言中的一个输出函数,使用时需要包含头文件stdio.h。另外,std::cout使用<<运算符进行输出,而printf使用格式化字符串进行输出。相比之下,std::cout更加类型安全,可以直接输出各种类型的数据,而printf需要根据不同的类型使用不同的格式化字符串。此外,std::cout还支持链式输出,可以在一行中输出多个数据,而printf需要多次调用才能输出多个数据。总的来说,std::cout更加方便、易用、安全,而printf则更加灵活、强大、可定制化。
写一个my_printf,并将内容以std::string格式用cout输出
以下是一个简单的实现my_printf的代码,并将内容以std::string格式用cout输出:
```
#include <iostream>
#include <cstdarg>
#include <string>
std::string my_printf(const char* format, ...) {
va_list args;
va_start(args, format);
char buffer[1024];
vsnprintf(buffer, 1024, format, args);
va_end(args);
return std::string(buffer);
}
int main() {
std::string output = my_printf("This is a %s example of %d.\n", "simple", my_printf);
std::cout << output;
return 0;
}
```
在这个例子中,我们通过使用可变参数和vsnprintf函数实现了my_printf函数。vsnprintf函数是一个可变参数的函数,它将格式化的字符串写入指定的缓冲区中。我们使用这个函数来格式化字符串,然后将结果存储在std::string中并返回。
在main函数中,我们调用my_printf函数并将其结果存储在output变量中。然后,我们使用cout将output输出到终端。