C++标准库string处理惩罚两个函数isdigit()和isxdigit()
添加时间:2013-8-2 点击量:
我们经常须要将string类型转换为int、long、double、float类型,cctype头文件供给了转换前的验证函数isdigit()和isxdigit()。经vs2010实验:
int main()
{
std::string strDigit="123.35";
std::string strXDigit="0 x56";
char szDigit="456.123";
char szXDigit="0 x57";
std::locale loc("");
if (isdigit(szDigit))
{
std::cout<<szDigit<<" is digit.\n";
}
if (isdigit((strDigit.c_str())))
{
std::cout<<strDigit<<" is digit.\n";
}
if (isxdigit(szXDigit))
{
std::cout<<szXDigit<<" is hex.\n";
}
if (isxdigit((strXDigit.c_str())))
{
std::cout<<strXDigit<<" is hex.\n";
}
return 0;
}
法度输出:
123.35 is digit.
456.123 is digit.
0 x56 is hex.
0 x57 is hex.
若是不是应用szDigit、szXDigit、(strDigit.c_str())、(strXDigit.c_str()),而是应用szDigit、szXDigit、strDigit.c_str()、strXDigit.c_str(),则不克不及编译成功。
在vc2012中须要引用locale头文件,用法为
std::locale loc("");
isdigit(szDigit,loc);
然则要用szDigit可以编译经由过程,然则不会获得正确的成果。
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》
我们经常须要将string类型转换为int、long、double、float类型,cctype头文件供给了转换前的验证函数isdigit()和isxdigit()。经vs2010实验:
int main()
{
std::string strDigit="123.35";
std::string strXDigit="0 x56";
char szDigit="456.123";
char szXDigit="0 x57";
std::locale loc("");
if (isdigit(szDigit))
{
std::cout<<szDigit<<" is digit.\n";
}
if (isdigit((strDigit.c_str())))
{
std::cout<<strDigit<<" is digit.\n";
}
if (isxdigit(szXDigit))
{
std::cout<<szXDigit<<" is hex.\n";
}
if (isxdigit((strXDigit.c_str())))
{
std::cout<<strXDigit<<" is hex.\n";
}
return 0;
}
法度输出:
123.35 is digit.
456.123 is digit.
0 x56 is hex.
0 x57 is hex.
若是不是应用szDigit、szXDigit、(strDigit.c_str())、(strXDigit.c_str()),而是应用szDigit、szXDigit、strDigit.c_str()、strXDigit.c_str(),则不克不及编译成功。
在vc2012中须要引用locale头文件,用法为
std::locale loc("");
isdigit(szDigit,loc);
然则要用szDigit可以编译经由过程,然则不会获得正确的成果。
真正的心灵世界会告诉你根本看不见的东西,这东西需要你付出思想和灵魂的劳动去获取,然后它会照亮你的生命,永远照亮你的生命。——王安忆《小说家的十三堂课》