0

有谁知道在不使用 C++11 正则表达式类的情况下验证 C++ 中的字符串格式的更好方法。基本上我有几个这种格式的字符串 TAG1:VALUE, TAG2:VALUE, TAG1:VALUE, TAG2:VALUE

TAG1 和 TAG2 是字符串,VALUE 是各种长度的整数值

示例字符串为:“PPS:112, FJ:543, PPS:76432, FJ:753”等等。

我需要一个函数来验证格式是否完全正确。

到目前为止,我正在逐个字符验证。这似乎充其量是乏味的。有没有更好的方法,我根本不知道。除非必须,否则我想再次避免使用 C++11 或任何第三方库中的正则表达式。我主要想知道是否有更好的方法可以只使用 C++ 和 STL

4

1 回答 1

2

根本不使用任何第三方库,不是真的。使用标准库组件可以做到的最好的事情如下:

#include <string>
#include <algorithm>

bool verify(const std::string& s)
{
    typedef std::string::size_type      size_type;
    typedef std::string::const_iterator cstr_it;

    size_type colon_index = s.find(":");

    if (colon_index == std::string::npos)
    {
        return false;
    }

    cstr_it letter_end = s.begin() + colon_index;
    bool valid_letter = std::all_of(s.begin(), letter_end, isupper);
    bool valid_number = std::all_of(letter_end, s.end(), isdigit);

    return valid_letter && valid_number;
}
于 2013-03-16T07:24:32.510 回答