[c++] 문자열의 앞뒤 공백 제거
#include <iostream>
#include <string>
#include <cctype>
std::string trim(const std::string& str) {
size_t start = str.find_first_not_of(" \t\n\r"); // 앞쪽 공백을 찾음
size_t end = str.find_last_not_of(" \t\n\r"); // 뒤쪽 공백을 찾음
if (start == std::string::npos) // 문자열이 모두 공백인 경우
return "";
return str.substr(start, end - start + 1); // 앞뒤 공백을 제거한 문자열을 반환
}
int main() {
std::string str = " Hello, world! ";
std::string trimmed = trim(str);
std::cout << trimmed << std::endl; // "Hello, world!"가 출력됨
return 0;
}
위의 코드에서 trim()
함수는 주어진 문자열에서 앞뒤 공백을 제거하여 반환합니다. find_first_not_of()
함수를 사용하여 첫 번째 non-space 문자를 찾고, find_last_not_of()
함수를 사용하여 마지막 non-space 문자를 찾습니다. 그 후에 substr()
함수를 사용하여 앞뒤 공백을 제거한 부분 문자열을 반환합니다.
만약 C++17부터 지원되는 표준 라이브러리의 std::string_view
를 사용하고 싶다면, 다음과 같이 코드를 변경할 수 있습니다:
std::string_view trim_view(std::string_view str) {
size_t start = str.find_first_not_of(" \t\n\r");
size_t end = str.find_last_not_of(" \t\n\r");
if (start == std::string::npos)
return "";
return str.substr(start, end - start + 1);
}
이 코드는 주어진 std::string_view
를 사용하여 문자열을 수정하지 않고 앞뒤 공백을 제거합니다.
이 방법들은 C++에서 문자열의 앞뒤 공백을 제거하는 간단하면서도 효과적인 방법입니다.