C++字符串

C++字符串,c++,C++,我有类似的东西。问题是字符串必须仅为字母,我如何才能做到这一点?我已经在这上面坐了几个小时了,找不到任何有效的解决办法。我试着使用这个话题的答案,但我想我太笨了,仍然无法让它工作: 包括 包括 包括 包括 包括 使用名称空间std; int mainvoid { 向量字符串; 弦线; 做 { 曲线; strings.push_backline; } 当线路停止时; 向量::迭代器w; cout您需要添加验证代码。对于简单的情况,您可以这样做 比如: if ( std::find_if( line

我有类似的东西。问题是字符串必须仅为字母,我如何才能做到这一点?我已经在这上面坐了几个小时了,找不到任何有效的解决办法。我试着使用这个话题的答案,但我想我太笨了,仍然无法让它工作:

包括 包括 包括 包括 包括 使用名称空间std; int mainvoid { 向量字符串; 弦线; 做 { 曲线; strings.push_backline; } 当线路停止时; 向量::迭代器w;
cout您需要添加验证代码。对于简单的情况,您可以这样做 比如:

if ( std::find_if( line.begin(),
                   line.end(),
                   []( unsigned char ch ) { return !isalpha( ch ); }
        ) != line.end() ) {
    //  not all letters
}
这实际上只适用于学校项目,而且不会
使用常见的网络编码UTF-8。

在while循环中,您需要迭代字符串,如果其中的字母不是字母,则不应将其推回到字符串向量中。要检查字母是否为字母,可以使用std::isalpha,您的循环最好与while std::cin>>line&&line!=停止{strings.push_backline;}。这样,你们两个都不会得到额外的元素,而且在使用该值之前就知道读取成功了。另外,添加另一个检查字符串是否仅为字母,或者将条件组合到readString函数中也非常容易。@402,而不是自己循环,我会使用std::all_of。@ghostofstandardspast std::all_of是一个循环也是。@402,是的,我同意迭代可能意味着这一点。我想如果你引用的是一个算法,你会说这个名称。如果不是,好处是它清晰、高效,并且没有bug,至少极有可能是。如果你在测试否定,有没有理由更喜欢std::find_if to std::all_of或者std::any_ofs std::find_if在C++11之前是否可用?我发现这两个选项对于这里测试的内容稍微更清楚一些。@ghostofstandardspast只有std::find_if不需要C++11。如果您确信C++11,std::any_of可能是更好的选择。