मैं एक ऐसा फ़ंक्शन लिखने की कोशिश कर रहा हूं जो C++ 0x की type_traits सुविधा का उपयोग कर char & wchar_t दोनों को संभाल सकता है। हां, मुझे पता है कि टाइप_ट्रेट के बिना इसे कैसे किया जाए, लेकिन मैं सुविधा की बेहतर समझ के लिए टाइप_ट्रेट्स का उपयोग करके इसे करना चाहता हूं।क्या char_ wchar_t के बीच अंतर करने के लिए type_traits का उपयोग करना संभव है?
template <typename T>
void SplitIt(T* base, T* ext, const std::basic_string<T>& fullFilePath, std::true_type)
{
_splitpath(fullFilePath.c_str(),NULL,NULL,base,ext);
}
template <typename T>
void SplitIt(T* base, T* ext, const std::basic_string<T>& fullFilePath, std::false_type)
{
_wsplitpath(fullFilePath.c_str(),NULL,NULL,base,ext);
}
template <typename T>
std::basic_string<T> GetBaseName(const std::basic_string<T>& fullFilePath)
{
T base[300], ext[50];
SplitIt(base, ext, fullFilePath, /*What goes here?*/);
return std::basic_string<T>(buf) + ext;
}
int main()
{
std::basic_string<TCHAR> baseName = GetBaseName(std::basic_string<TCHAR>(__FILE__));
}
क्या कोई टाइप_ट्रेट संपत्ति है जो wchar_t से char को अलग करती है?
पीएफ, आसान समाधान! ... मैं इसके बारे में भी सोचने से शर्मिंदा हूं ... :( – Xeo
शानदार! हालांकि यह मेरे कोड में is_same होना चाहिए। धन्यवाद। –
Sharath
@ भरत: ठीक है, इसे ठीक किया गया ... – MartinStettner