在没有循环的情况下,可以使用递归来实现用C++打印人类可读的文件大小。以下是一个示例代码:
#include <iostream>
#include <string>
std::string formatFileSize(double size, int precision = 2) {
static const char* units[] = {"B", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
static const int numUnits = sizeof(units) / sizeof(units[0]);
int i = 0;
while (size >= 1024 && i < numUnits - 1) {
size /= 1024;
i++;
}
char buffer[20];
snprintf(buffer, sizeof(buffer), "%.*f %s", precision, size, units[i]);
return buffer;
}
void printHumanReadableFileSize(double size) {
std::string formattedSize = formatFileSize(size);
std::cout << "File size: " << formattedSize << std::endl;
}
int main() {
double fileSize = 1234567890; // 文件大小,单位为字节
printHumanReadableFileSize(fileSize);
return 0;
}
这段代码定义了两个函数:formatFileSize
和printHumanReadableFileSize
。formatFileSize
函数将文件大小转换为人类可读的格式,例如将字节数转换为KB、MB、GB等单位。printHumanReadableFileSize
函数用于打印人类可读的文件大小。
在main
函数中,我们定义了一个文件大小fileSize
,单位为字节,然后调用printHumanReadableFileSize
函数打印人类可读的文件大小。
运行以上代码,输出结果为:
File size: 1.15 GB
这样就实现了在没有循环的情况下用C++打印人类可读的文件大小。
领取专属 10元无门槛券
手把手带您无忧上云