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();
}
};