C++에서 setw 조작기 활용
이 게시물은 C++에서setw
스트림 조작기를 활용하는 방법을 보여줍니다.
std::setw
함수를 사용하여 C++에서 다음 I / O 작업의 너비 수정
스트림 조작기는 입력 / 출력 형식을 수정하고 때로는 일부 작업을 생성하는 특수 개체입니다. 출력 스트림에서 사용되는 가장 일반적인 객체 인std::endl
함수는 실제로 스트림 조작자입니다. 개행 문자를 인쇄하고 출력 버퍼를 플러시합니다.
반면std::setw
명령은 출력을 생성하지 않습니다. 대신 다음 I / O의 너비를 전달 된 정수 인수로 설정합니다. 일부 스트림 조작자는 인수를 사용합니다. 여기에는<iomanip>
헤더가 포함되어야합니다. 다음 예제는setw
조작기에 대한 기본 출력 형식화 시나리오를 보여줍니다. setfill
조작기는setw
의 자연스러운 동반자입니다. 전자는 주어진char
인수로 채우기 문자를 수정하는 데 유용합니다.
#include <iomanip>
#include <iostream>
#include <sstream>
using std::cout;
using std::endl;
using std::setw;
using std::string;
int main() {
cout << "setw() : |" << 11 << "|" << endl
<< "setw(4): |" << setw(4) << 11 << "|" << endl
<< "setw(4): |" << 22 << setw(4) << std::setfill('-') << 22 << 33 << "|"
<< endl;
return EXIT_SUCCESS;
}
출력:
setw() : |11|
setw(4): | 11|
setw(4): |22--2233|
또는setw
조작기를 사용하여stringstream
객체에서 추출 된 문자 수를 제한 할 수 있습니다. 이 메소드는 고정 배열로 선언 된char
버퍼에 유용 할 수 있습니다. 일반적으로 조작자는 함수 오버로딩을 사용하여 구현됩니다.
각 조작자는 스트림에 대한 참조를 반환하는 함수입니다. 이러한 함수 중 하나에 대한 포인터는 자체적으로 오버로드 된 연산자 인 스트림 추출 / 삽입 연산자로 전달됩니다. 인수 함수는 오버로드 된 연산자 본문에서 호출됩니다.
#include <iomanip>
#include <iostream>
#include <sstream>
using std::cout;
using std::endl;
using std::setw;
using std::string;
int main() {
std::stringstream ss1("hello there");
char arr[10];
ss1 >> setw(6) >> arr;
cout << arr;
return EXIT_SUCCESS;
}
출력:
hello
setw
조작기의 유용한 기능 중 하나는 고정 크기 버퍼에 저장해야하는 사용자 입력에 대한 제한을 쉽게 설정하는 것입니다. sizeof(buffer)
를setw
에 대한 인수로 전달하기 만하면됩니다. setw
호출은 단일 I / O 작업에 영향을 미치며 기본 너비가 자동으로 복원됩니다. 반대로setfill
수정은 명시적인 변경이있을 때까지 활성 상태로 유지됩니다.
#include <iomanip>
#include <iostream>
using std::cin;
using std::cout;
using std::endl;
using std::setw;
int main() {
char buffer[24];
cout << "username: ";
cin >> setw(sizeof(buffer)) >> buffer;
return EXIT_SUCCESS;
}
출력:
username:
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook