【发布时间】:2019-12-01 12:21:44
【问题描述】:
在函数中,传递一个包含字母、数字和特殊字符的字符串。该函数应该只返回字符串中的字母。
我尝试了以下代码,但它也给出了数字。我哪里错了?
在这段代码中(使用c++11)std::string::find_first_not_of正在使用stl算法
std::string jobName1 = "job_2";
std::size_t found =
jobName1.find_first_not_of("abcdefghijklmnopqrstuvwxyzABCDEFGHIJK
LMNOPQRSTUVWXYZ");
while (found!=std::string::npos)
{
jobName1.erase(found,1);
found=jobName1.find_first_not_of("abcdefghijklmnopqrstuvwxyzAB
CDEFGHIJKLMNOPQRSTUVWXYZ",(found+1));
}
输入:
job_2
输出:
job2
预期:
job
【问题讨论】:
-
投票结束是一个错字。你有一个错误。
find_first_not_of("abcdefghijklmnopqrstuvwxyzAB CDEFGHIJKLMNOPQRSTUVWXYZ",(found+1))应该是find_first_not_of("abcdefghijklmnopqrstuvwxyzAB CDEFGHIJKLMNOPQRSTUVWXYZ",(found))因为你删除了found所以found + 1是下一个字符,因为found现在是下一个字符。 -
@NathanOliver 太好了...感谢您的快速回复。
-
@Sagar 下次使用std::remove_if。
标签: c++ algorithm c++11 stdstring c++-standard-library