Oct 4, 2012

c++ notes: I/O


  1. 记得包含 <iomanip> <fstream>
  2. 少用 std::cin >> ...; 处理字符和字符串. 如果使用记得加一个 std::cin.ignore(); 来吃掉回车. std::cin.sync(); 来清空buffer
  3. 使用std::cin.getline( const char* str, size_t n, char ch );   /*对于文件流也一样适用*/ ch设置为 '\n'
  4. 对于使用string 类型的操作, 使用相应的版本: getline( iostream std::cin, string str);
  5. 使用GNU C的系统库函数来实现系统相关的操作, 比如文件操作. 比较有用的一个函数是 int scandir(const char* directory, struct ***dirent namelist, int (*selector)(void * ), alphasort) ; 来扫描文件. 其中 返回文件个数, directory 是目标文件夹(路径), namelist 存储扫描得到的文件(夹) 一般定义为: struct ** storagelist 并使用 &storagelist 作为参量. 不用担心其大小. 因为它只是一个指针, 指向的部分是由malloc 分配的. 使用完之后最好加以free.; selector 是一个自定义的比较函数. 返回值为非零的文件将会被选择; alphasort 也本应该是一个自定义的文件, 表示返回文件的排列方法. 不过系统提供了几个函数. alphasort就是一个常用的.
  6. 使用 定义在 <cstdlib.h> 中的库函数来读取环境变量: system(const char* str);来执行shell命令. getenv(const char* str) 来获得环境变量.
  7. 使用系统预编译宏: __TIME__ __DATE__ ; __LINE__ 等等

No comments:

Post a Comment