验证字符串是否包含至少一个字母

时间:2016-02-25 08:18:24

标签: c++

您好我试图检查字符串是否包含至少一个字母,但在此阶段不起作用。如果我键入13,它会继续而不会给我错误, 如果包含数字我只想要至少一个字母,那就没关系了:Patrick1没关系。

这是我尝试的代码:

public T NewRequest<T>(HttpWebRequest request)
    {
        T parsedResult = default(T);
        string responseData = null;
        try
        {
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                if (response.Cookies.ExtractCookieInformation().Count > 0)
                {
                    SaveCookiesToListFrom(response);
                }
                else
                {
                    response.TryFixCookiesFrom(request);
                    SaveCookiesToListFrom(response);
                }

                responseData = GetContentFrom(response);
            }
        }
        catch (WebException wex)
        {
            var pageContent = new StreamReader(wex.Response.GetResponseStream())
                      .ReadToEnd();
            Console.WriteLine(pageContent);
        }
        catch (Exception e)
        {
            Console.WriteLine(e);
        }

        parsedResult = JsonConvert.DeserializeObject<T>(responseData);

        return parsedResult;
    }

任何建议都要感谢你们!

2 个答案:

答案 0 :(得分:5)

C ++标准库有many nice algorithmic functions,例如一个名为std::any_of的文件,如果传递给的范围中的任何元素导致谓词返回true,它将返回true

可以像这样使用::isalpha

if (std::any_of(std::begin(b), std::end(b), ::isalpha))
{
    // There is at least one alphabetic character in the string
}

重要说明: {+ 1}}函数是在C ++ 11中引入的。有些编译器需要特殊的标志来启用C ++ 11。很老的编译器和标准库可能根本没有这个功能。

答案 1 :(得分:0)

请尽量避免重复自己(就像你使用“getline”一样)
如果必须,请重新考虑您的算法...在您的情况下,它可能类似于“在没有输入正确名称的情况下重复输入”,这可以用这种方式编码:
这样,如果你想改变A中的代码,你也不能忘记将它改为B(以及你最终将其复制到的所有其他地方); - )

#include <algorithm>
#include <iostream>
#include <cctype>

void setName(std::string& b) {
    bool isValidName=false;    // nothing entered yet
    while ( !isValidName ) 
    {
        std::cout << "Please enter your name:" << std::endl;
        std::getline(std::cin, b);
        if (std::any_of(std::begin(b), std::end(b), ::isalpha)) {
            isValidName=true;    // correct name entered
        }
        else {
            std::cout << "Error" << std::endl;
        }
    }
}

int main() {
    std::string name;
    setName(name);
    std::cout << "Hello, " << name << "!" << std::endl;
    return 0;
}