방금 C++에서 시작했고 필자가 알아 내지 못하는 연습 문제에서 문제가 발생했습니다. 나는의 형태로 콘솔에서 라인을 읽을 수 있어야합니다 : N은 숫자, 다음과 같은 입력입니다''(공백) 문자 뒤에 입력 종료
N A B C... etc.
는 N이 무엇인지에 따라 서로 다른 유형과 다른 금액이 될 것입니다.
내 접근 방식은 N을 읽고 N이 무엇인지에 따라 다른 입력을 요청하는 것입니다. 하지만 모든 입력을 한 줄로 받아 들여야하고 단일 공백 문자 뒤에 어떤 형식의 입력도 끝낼 수 없었습니다. 어쨌든 하나의 숫자와 공백 문자를받은 후 다음 문장으로 이동할 수 있습니까? 아니면이 문제를 해결할 더 좋은 방법이 있습니까? 고마워요.
는편집 :
좋아 내가 그것을 알아 냈어요 생각하지만 난 그것을 이해 완전히하지 않는, 그래서 istringstream에보고해야합니다. 여기에 내가 가진 것이있다.
vector<string> words;
string token, text;
getline(cin, text);
istringstream iss(text);
while (getline(iss, token, ' ')) {
words.push_back(token);
}
이렇게하는 것이 좋은 방법입니까, 아니면 다른 방법을 사용해야합니까? 그리고 누구든지 할 수 있다면,이 라인들을 설명해 주시겠습니까?
while (getline(iss, token, ' '))
이전의 모든 문자로 토큰을 채우면서 공간에 도달하면 true를 반환합니다.
그리고이 하나가 나를 혼란스럽게합니다.
getline(cin, text);
그러나 어떻게 getline()과 문자열 유형이나 다른 것을 사용하지 않고도 다양한 입력 행을 읽었을까요? – Kzone272
전체 줄에서 (입력 한 입력 수에 대한 지식없이) 읽은 다음 첫 번째 토큰 (또는 N)을 읽는 공백 문자를 토큰화할 수 있습니다. N이 무엇인지 파악한 후에 나머지 예상 토큰을 읽을 수 있습니다. 잘못된 입력을 확인하는 방법은 귀하에게 달려 있습니다. –
좋아, 알았어. 감사! – Kzone272