나는 이와 비슷한 것을 가지고있다. 문제는 문자열 만 글자이어야한다는 것입니다. 어떻게해야합니까? 나는 몇 시간 동안이 자리에 앉아 있었고 아무런 해결책도 찾지 못했습니다. 나는이 주제 Accept only letters에서 답변을 사용하려했지만 내가 너무 바보 야 아직도 당신이 유효성 검사 코드를 추가 할 필요가 :(C++ 문자열 만의 문자
#include <string>
#include <vector>
#include <iostream>
#include <iterator>
#include <algorithm>
using namespace std;
int main(void)
{
vector <string> strings;
string line;
do
{
cout << "enter string, 'stop' stops: ";
cin >> line;
strings.push_back(line);
}
while (line != "stop");
vector <string> :: iterator w;
cout << "Before sorting \n";
for (w=strings.begin(); w!=strings.end(); w++)
cout << *w << endl;
sort (strings.begin(),strings.end());
cout << "After sorting \n";
for (w=strings.begin(); w!=strings.end(); w++)
cout << *w << endl;
}
while 루프에서 당신은 반복 할 필요가 문자열 및 문자가 문자가 아닌 경우 문자열의 벡터로 다시 밀어 넣지 마십시오. 문자가 영문자인지 확인하려면'std :: isalpha'를 사용할 수 있습니다. http://www.cplusplus.com/reference/cctype/isalpha/ – 101010
루프가'while ((std :: cin >> 줄) && (줄! = "중지")) {strings.push_back (줄);}'. 그렇게하면 추가 요소를 얻지 못하고 값을 사용하기 전에 읽기 성공을 알 수 있습니다. 문자열을 문자로만 검사하거나 조건을'readString' 함수로 결합하는 또 다른 검사를 추가하는 것도 정말 쉽습니다. – ghostofstandardspast
@ 40two, 직접 반복하지 말고'std :: all_of'를 사용합니다. – ghostofstandardspast