2017-11-27 3 views
1

우선, 실수를 저질렀다면 용서해주세요.사용자 입력 문자열에 대한 몇 가지 알고리즘

안녕하세요, 저는 C++ 코드를 작성 중이므로 사용자로부터 문장을 받아서 몇 가지 작업을 수행해야합니다.

  1. 문자열에 몇 개의 문자가 있습니까?
  2. 문자열에 몇 단어가 있습니까?

이 코드로 문자열을 얻고있다 :

string str; 
cout << "Please enter your string."<<endl; 
getline(cin,str); 
cout<< "Your string is : "<<a<<endl; 
cout<<"Length of your string is : "<<str.length(); 

내가 str.length와 문자열의 길이를 얻고 있지만 공간이 너무 내 질문에, 내가 어떻게이 "공간"을 결정한다 카운트?

비록 @KABoissonneault 완벽하게 정확하지만 나도 strtok를 봐주는 제안 : 내가 코멘트를 게시하는 명성을 충분히 가지고 있겠지 때문에

+0

'std :: string :: find' 메소드를 사용하십시오 :-) – AndyG

+0

['std :: count_if'] (http://en.cppreference.com/w/cpp/algorithm/count) 문자열의 문자 수를 계산합니다 (숫자, 특수 문자 등이 아닌 경우) – CoryKramer

+0

공백이 아닌 문자 수를 계산할 수 있습니다 단순한'std :: count_if (str.begin(), str.end(), [] (const char c) {return! std :: isspace (c);});'. 이 알고리즘의 변형을 통해이 술어에 따라 문자열을 찾고 "토큰 화"할 수 있습니다. 건너 뛰려는 람다에 공백이 아닌 문자를 추가 할 수도 있습니다. – KABoissonneault

답변

0

, 내가 여기에 아래로 쓰고 있어요. strtok는 구분자 (스페이스가 귀하의 경우)에 따라 문자열을 토큰화할 수 있습니다