>

구두점을 확인하기 위해 문자열을 반복하려고합니다. ispunct ()를 사용하려고했지만 ispunct 호출에 대한 일치 기능이 없다는 오류가 발생했습니다. 이것을 구현하는 더 좋은 방법이 있습니까?

for(std::string::iterator it = oneWord.begin(); it != oneWord.end(); it++)
{
    if(ispunct(it))
    {
    }
}


  • 답변 # 1

    it  반복자이며 문자열의 문자를 가리 킵니다. 가리키는 것을 얻으려면 역 참조해야합니다.

    if(ispunct(static_cast<unsigned char>(*it)))
    
    

  • 답변 # 2

    Is there a better way to implement this?

    std :: any_of :

    사용
    #include <algorithm>
    #include <cctype>
    #include <iostream>
    int main()
    {
       std::string s = "Contains punctuation!!";
       std::string s2 = "No puncuation";
       std::cout << std::any_of(s.begin(), s.end(), ::ispunct) << '\n';
       std::cout << std::any_of(s2.begin(), s2.end(), ::ispunct) << '\n';
    }
    
    

    실시간 예

관련 자료

  • 이전 Angular 4 애플리케이션을 사용하여 Firebase 스토리지에서 모든 제품 이미지 (약 1000)를 캐시하는 방법은 무엇입니까?
  • 다음 postgresql - SQL의 문자열에서 따옴표를 제거하고 Postgres에 삽입