C++에서 정수를 입력받을때 공백없이 한번에 입력받는법
조회수 4214회
정수입력받을때 C에서는 scanf("%1d",&배열) 이런방법으로 한번에 입력받는게 가능한데 C++에서 scanf를 안쓰고 한번에 공백없이 받는방법 없나요? 문자열로 받아서 변환해주는거 밖에 모르겠는데 너무 번거로운거 같네요 ㅜ
1 답변
-
아래 코드 처럼 한 글자씩 읽어와 숫자로 변환하는 것은 어떤가 싶네요.
#include <iostream> int main() { int inputs[10]; for (int& digit : inputs) digit = std::cin.get() - '0'; for (int digit : inputs) std::cout << digit; return 0; }
아니면 아래 처럼 함수를 하나 만들어 두어 좀더 쉽게 사용하는 방법도 있습니다.
#include <iostream> template<typename T> struct Digits { typedef T* iterator; iterator begin, end; template<typename U, std::size_t size> Digits(U (&arr)[size]) : begin(arr), end(arr + size) {} Digits(T* arr, std::size_t size) : begin(arr), end(arr + size) {} }; template<typename T> std::istream& operator>>(std::istream& s, Digits<T> v) { typedef typename Digits<T>::iterator iterator; for (iterator itor = v.begin, end = v.end; itor != end; ++itor) *itor = static_cast<T>(s.get() - '0'); return s; } int main() { int inputs[10]; std::cin >> Digits<int>(inputs); for (int digit : inputs) std::cout << digit; return 0; }
댓글 입력