문자열에서 선행 및 후행 공백 제거
C에서 문자열 객체의 선행 및 후행 공백을 제거하는 것은 일반적인 작업입니다. 문자열 클래스에는 이를 수행하는 기본 메소드가 없지만 문자열 조작 기술의 조합을 통해 달성할 수 있습니다.
선행 및 후행 공백을 제거하려면 find_first_not_of 및 find_last_not_of 함수를 사용하여 첫 번째와 마지막을 식별할 수 있습니다. 문자열의 공백이 아닌 문자. 이러한 위치가 결정되면 substr 함수를 사용하여 앞뒤 공백 없이 부분 문자열을 추출할 수 있습니다.
#include <string> std::string trim(const std::string& str) { const auto strBegin = str.find_first_not_of(" "); if (strBegin == std::string::npos) { return ""; } const auto strEnd = str.find_last_not_of(" "); const auto strRange = strEnd - strBegin + 1; return str.substr(strBegin, strRange); }
추가 공백을 줄이기 위해 서식 확장
문자열에서 단어 사이의 추가 공백을 제거하려면 보다 포괄적인 접근 방식이 필요합니다. 이는 find_first_of, find_last_not_of 및 substr 함수를 반복적으로 사용하여 공백의 하위 범위를 자리 표시자 문자 또는 문자열로 바꾸면 달성할 수 있습니다.
std::string reduce(const std::string& str, const std::string& fill = " ") { auto result = trim(str); auto beginSpace = result.find_first_of(" "); while (beginSpace != std::string::npos) { const auto endSpace = result.find_first_not_of(" ", beginSpace); const auto range = endSpace - beginSpace; result.replace(beginSpace, range, fill); const auto newStart = beginSpace + fill.length(); beginSpace = result.find_first_of(" ", newStart); } return result; }
사용 예
다음 코드 조각은 이러한 사용 방법을 보여줍니다. 함수:
const std::string foo = " too much\t \tspace\t\t\t "; const std::string bar = "one\ntwo"; std::cout << "[" << trim(foo) << "]" << std::endl; std::cout << "[" << reduce(foo) << "]" << std::endl; std::cout << "[" << reduce(foo, "-") << "]" << std::endl; std::cout << "[" << trim(bar) << "]" << std::endl;
이 코드는 다음과 같은 출력을 생성합니다.
[too much space] [too much space] [too-much-space] [one two]
위 내용은 C의 문자열에서 선행 및 후행 공백을 자르는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!