C标准中指定了一些预定义的宏,对于编程经常会用到。
下面这个表中就是一些常常用到的预定义宏。

__DATE__
进行预处理的日期(“Mmm dd yyyy”形式的字符串文字)

__FILE__
代表当前源代码文件名的字符串文字

__LINE__
代表当前源代码中的行号的整数常量

__TIME__
源文件编译时间,格式类似 "hh:mm:ss",字符串类型

__func__
当前所在函数名,也是字符串类型,C99 新增,VC6 就不支持.

对于__FILE__,__LINE__,__func__这样的宏,在调试程序时是很有用的,因为你可以很容易的知道程序运行到了哪个文件的那一行,是哪个函数。

一些C++中字符串处理的函数集合 :

#include <algorithm>
#include <vector>
#include <string>

class MyString
{
private:
 //
public:
 //将指定字符串转换为大写
 const std::string& upperstring(std::string &src)
 {
  std::transform(src.begin(),src.end(),src.begin(),toupper);
  return src;
 }

 //将指定字符串转换为小写
 const std::string& lowerstring(std::string &src)
 {
  std::transform(src.begin(),src.end(),src.begin(),tolower);
  return src;
 }

//将指定字符串按指定拆分字符拆分
 unsigned int split(const std::string &chars,
  const std::string &separator,
  std::vector<std::string> &savelist)
 {
  if(chars.length() <= 0 || chars.empty())
  {
   return 0;
  }

  if(separator.length() <= 0 || separator.empty())
  {
   return 0;
  }

  //每次取出分隔符前字符字段加入vector->savelist
  unsigned int pos = 0;
  unsigned int newpos = 0;
  while(newpos >= 0)
  {
   newpos = chars.find(separator,pos);
   if(newpos == std::string::npos)
   {
    std::string str = "";
    str = chars.substr(pos,std::string::npos);
    if(str != "")
    {
     savelist.push_back(str);
    }
    break;
   }
   savelist.push_back(chars.substr(pos,newpos - pos));
   pos = newpos + separator.length();
  }
  return savelist.size();
 } 

};