[英]There's a strlen, and a wcslen, but is there a template function like strlen<char> or strlen<wchar_t>?
有一个strlen和一个wcslen函数,但是有一个模板化的字符数组长度函数,所以你可以做一些像strlen<char>
或strlen<wchar_t>
吗?
如果没有,那么我想我会写自己的。
你有std :: string使用的char_traits帮助器。
它提供char_traits<char>::length
和char_traits<wchar_t>::length
。
如果你使用模板,你不会使用std :: string(当然是模板化的)?
template <class T> size_t strlen( T * _arg )
{
if ( _arg == 0 )
return -1;
size_t i = 0;
while ( _arg[i] != 0 ) ++i;
return i;
}
简单的答案是std :: find,带有一个永远不匹配的特殊结束迭代器。 (在模板中,您正在寻找T()。)
没有。
这是因为strlen()和wcslen()是C(不是C ++)的一部分,因此处理C-Strings。
C ++通过提供std :: string(std :: wstring)来阻止使用C-Strings。 这些当然是(std :: basic_string <T>)的模板。
转而使用C ++ std :: string不是更好吗?
那么显而易见的方法是让你的函数采用basic_string<CharType>
并让用户形成其中一个。 然后所有长度的东西都隐藏在标准库中。
如果这不合适,只需在将它们复制到流的内部缓冲区时保持字符计数的运行轨迹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.