std :: string을 잘라내어 확장하기로 결정하여 시작과 끝의 공백뿐만 아니라 전달하는 문자도 제거하도록한다고 가정합니다 공백, 줄 바꿈 및 캐리지 리턴과 같은 다른 문자열에서.템플릿 함수의 기본 매개 변수 값 (형식에 따라 다름)
std::string Trim (const std::string &In_Original,
const std::string &In_CharsToTrim = " \n\r");
기본적으로 In_CharsToTrim에있는 모든 문자는 In_Original의 시작과 끝에서 제거됩니다.
이제 std :: string 및 std :: wstring에 대해이 코드를 작성해야했습니다. 내가 터무니없는 것을 발견했기 때문에 나는 템플릿을 사용하기로 결정했다. 그러나 작동하지만 디폴트 값을 전달할 수 없다. 왜냐하면 std :: wstring 버전은 기본값으로 L" \n\r"
을 가져야하기 때문이다. . 함께
template <typename Type> Type Trim (const Type &In_String,
const Type &In_TrimCharacters);
:
나는이 시도template std::string Trim (const std::string &In_String,
const std::string &In_TrimCharacters = " \n\r");
template std::wstring Trim (const std::wstring &In_String,
const std::wstring &In_TrimCharacters = L" \n\r");
그러나 그것은 작동하지 않았다. 그것은 심지어 컴파일되지 않습니다.
현재, 내가 무엇을, 두 번째 매개 변수없이 호출 할 때를위한 별도의 기능이있다, 그러나 이것은 완전히 잘못된 접근 방식이 간단 트림 기능에, 그리고
template <typename Type> Type Trim (const Type &In_String,
const Type &In_TrimCharacters);
std::string Trim (const std::string &In_String);
std::wstring Trim (const std::wstring &In_String);
, 단순히 해요 완전한 버전을 호출.
그래서, 기본적으로, 내가 부탁 해요입니다이 ... :
가 어떻게 템플릿 유형에 따라 다른 기본 값을 전달 할 수 있습니까? 기본적으로, 유일한 변화는 기본 매개 변수 인 전문성, ...이 경우
이 ... 한 경우와 다른 std::wstring (L" \n\r")
에
을 std::string (" \n\r")
을 통과하거나 ...이 내가하려는 일을하는 또 다른 방법, 여기?
이 솔루션은 변경하지 않고 일 컴파일러 옵션을 제공합니다. 감사! –