최근에 입력 된 char 데이터를 받아들이면 받아 들일 수 있는지 테스트하고 (a-z, #는 입력 끝을 표시 함) 테스트를 스택에 넣어서 그것이 회귀인지 확인합니다. 나는 그것을 한 번에 한 글자 씩 넣을 것을 기대하고 있었지만, 내가 파운드로 끝나는 줄을 입력하면 그것은 작동한다. 여기에 관련 코드의 일부는 다음과 같습니다 그래서이 프로그램은 왜 작동합니까?
char buffer;
bool pound_test = false;
bool palindrome = false;
bool keep_going = true;
stack<char> stack1, stack2, stack3;
string str = "";
cout << "Please enter a string, then end it with the pound sign. " << endl;
while(pound_test == false) {
cin >> buffer;
if((buffer >= 97) && (buffer <= 122))
{
stack1.push(buffer);
stack2.push(buffer);
str += buffer;
}
if((buffer >= 65) && (buffer <= 90)) {
buffer = buffer + 32;
stack1.push(buffer);
stack2.push(buffer);
str += buffer;
}
if(buffer == '#')
pound_test = true;
}
, 사용자가 "레이싱 카 번호"와 같은, 하나의 긴 문자열을 입력하고 프레스 입력 할 때, 프로그램이 제대로 스택에 넣는다. 내 질문은 간단합니다 : 왜? Cin이 루프 자체에 있기 때문에 데이터가 제대로 작동하려면 한 번에 하나의 char로 데이터를 입력해야하지 않겠는가? 루프는 반복적으로 스택에 여러 문자를 입력해야합니까? 감사!
편집 : 답 해 주셔서 감사합니다/의견 모두들! 나는 정말로 빠르고 친절한 대답에 감명 받았다. 나는이 사이트를 다시 사용할 확실성이있다.
그것은 단지 cin이 작동하도록 정의 된 방법이 아닙니다. 첫 번째 빈칸을 읽습니다. 한 번에 하나씩 읽고 싶다면 cin을 사용하십시오.get 또는 getchar – frankc
나는 그것을 얻지 못한다. 심지어 컴파일되지도 않는다. 스택 뒤에';'이있다.'... –
Blindy
@Blindy : 죄송합니다. 포맷 실수입니다. P – Ryan