[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++에서 문자열의 앞뒤 공백을 제거하는 간단하면서도 효과적인 방법입니다.