string str;
if (str = 1.\t) || (str = 2.\t) || ........ || (str = n.\t) {
// some code
}
基本上我必须检查int,然后是“。\ t”
答案 0 :(得分:1)
你想要的正则表达式是[0-9]+\.\t
如果需要正则表达式引擎,请使用Boost.Regex。
答案 1 :(得分:1)
这是一种方法(没有正则表达式),如果你的字符串总是一个int后跟.\t
.\t
boost::lexical_cast
,因为如果无法转换字符串,这将引发异常),如果失败,请尝试strtol
并检查它是否使用了完整的字符串。 答案 2 :(得分:0)
afaik必须使用额外的lib才能在c ++中使用regExp功能,而boost提供了这样的功能。 我发现johndcook.com下的解释非常有帮助。
答案 3 :(得分:0)
对于这种情况,正则表达式是过度的 试试这个:
bool testIntFollwedByTab(std::string const& test)
{
std::stringstrean teststream(test);
int num;
char c;
return (teststream >> std::noskipws >> num >> c) && (c == '\t');
}
test
放入流中。 noskipws
表示空白是重要的(否则在数字和字符被静默删除之前引导空格)。
或者在普通代码中(有一行):
int num; char c;
if ((std::stringstream(str) >> std::noskipws >> num >> c) && (c == '\t'))
{
// Do Work
}