📄 list3-17.cpp
字号:
// Listing 3-18
// This program shows how manipulators are
// used with the iostreams
#include <iostream>
#include <sys/stat.h>
#include <dirent.h> // Requires POSIX compatibility
#include <string.h>
#include <dir.h>
#include <time.h>
#include <iomanip.h>
int main(int Argc,char *Argv[])
{
if(Argc == 2){
DIR *Directory;
Directory = opendir(Argv[1]);
chdir(Argv[1]);
if(!Directory == NULL){
float DirectorySize = 0;
struct dirent *Entry;
struct stat Buffer;
Entry = readdir(Directory);
while(Entry != NULL)
{
if (stat(Entry->d_name,&Buffer) == 0){
DirectorySize = DirectorySize + Buffer.st_size;
}
else{
cerr << "could not stat " << Entry->d_name << endl;
}
Entry = readdir(Directory);
}
rewinddir(Directory);
cout << "\f";
cout.precision(4);
Entry = readdir(Directory);
while(Entry != NULL)
{
cout<< setiosflags(ios_base::left | ios_base::fixed);
cout << setfill('*') << setw(20);
stat(Entry->d_name,&Buffer);
cout << Entry->d_name << "\t" << setw(12);
cout << setiosflags(ios::right) << setfill(' ');
cout << dec << Buffer.st_size << "\t " << setw(12);
cout << setiosflags(ios::right) << setfill(' ');
cout << hex << Buffer.st_size << "\t" << setw(9);
cout << setiosflags(ios::right) << showpoint << setfill(' ');
cout << (Buffer.st_size / DirectorySize * 100) << '%' << "\t";
cout << setw(9) << setiosflags(ios_base::right) << scientific;
cout << setfill(' ') << (Buffer.st_size / DirectorySize * 100) << '%' << "\t";
cout << setw(12) << setiosflags(ios_base::left);
cout << ctime(&Buffer.st_atime) << endl;
Entry = readdir(Directory);
}
cout << setprecision(0);
cout << setiosflags(ios_base::oct | ios_base::fixed);
cout << "Directory Size: " << DirectorySize << endl;
}
else{
cerr << "could not open " << Argv[1] << endl;
}
closedir(Directory);
return(1);
}
return(0);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -