作者:朱金灿
来源:http://blog.csdn.net/clever101
发现VS2008的C++ TR1库已经支持正则表达式了(注意装了VS 2008sp1采用TR1库的)。下面简单做个测试,用它来判断一个字符串是否为一个数字:
#include <string>
#include <regex>
// 检查一个字符串是否为十进制数字
void CheckString()
{
std::string str1[3];
bool b[3];
std::tr1::regex p("-?\\d+\\.?\\d+");
str1[0] = "-0.2255";
str1[1] = "0xcadf";
str1[2] = "123123.-123";
b[0] = std::tr1::regex_match(str1[0],p);
b[1] = std::tr1::regex_match(str1[1],p);
b[2] = std::tr1::regex_match(str1[2],p);
for (int i=0;i<3;i++)
{
if (b[i])
std::cout<<str1[i]<<" is a decimal!"<<endl;
else
std::cout<<str1[i]<<" is not a decimal!"<<endl;
}
}
int main(int argc, char* argv[])
{
CheckString();
system("PAUSE");
return 0;
}
编译环境为:Win XP+sp3,VS2008 + sp1。这里是对TR1库的一个完整说明:C++ Technical Report 1。