История изменений
Исправление GPFault, (текущая версия) :
Т.е. мы сделали весь из себя класс, типа для строк, загнали туда строку «Привет мир!». Хорошо. А потом оказывается, что посчитать количество символов (не байт) в строке затруднительно, потому что это юникод.
string_view намеренно сделан минимальным. Легковесная замена char*, которая не обязывает с собой таскать тяжёлые вещи.
Поэтому если оказывается что нужна функция подсчёта юникодных символов - то… делается то же что и ASСIIZ - она и вызывается. Никакой новый метод не пишется, ничего не наследуется. string_view это по сути plain-old-data, а НЕ вундер-вафля, его соглашение подразумевает что если нужен asciiz для внешней функции аналога которой нет в string_view - то просто передавай его, без всякого стеснения. my_external_lib_symbol_counting_func(sview.data())
При этом в большинстве даже сишных библиотек - у методов работы со строками есть аргумент длина или вариация его принимающая - и будет удобно вызвать my_external_lib_symbol_counting_func_with_len(sview.data(), sview.size()) а не вспоминать в какой переменной длина этой строки.
Исправление GPFault, :
Т.е. мы сделали весь из себя класс, типа для строк, загнали туда строку «Привет мир!». Хорошо. А потом оказывается, что посчитать количество символов (не байт) в строке затруднительно, потому что это юникод.
string_view намеренно сделан минимальным. Легковесная замена char*, которая не обязывает с собой таскать тяжёлые вещи.
Поэтому если оказывается что нужна функция подсчёта юникодных символов - то… делается то же что и ASСIIZ - она и вызывается. Никакой новый метод не пишется, ничего не наследуется. string_view это по сути plain-old-data, а НЕ вундер-вафля, его соглашение подразумевает что если нужен asciiz для внешней функции аналога которой нет в string_view - то просто передавай его, без всякого стеснения. my_external_lib_symbol_counting_func(sview.data())
При этом в большинстве даже сишных библиотек - у методов работы со строками есть аргумент длина или вариация его принимающая - и будет удобно вызвать my_external_lib_symbol_counting_func(sview.data(), sview.size()) а не вспоминать в какой переменной длина этой строки.
Исправление GPFault, :
Т.е. мы сделали весь из себя класс, типа для строк, загнали туда строку «Привет мир!». Хорошо. А потом оказывается, что посчитать количество символов (не байт) в строке затруднительно, потому что это юникод.
string_view намеренно сделан минимальным. Легковесная замена char*, которая не обязывает с собой таскать тяжёлые вещи.
Поэтому если оказывается что нужна функция подсчёта юникодных символов - то… делается то же что и ASСIIZ - она и вызывается. Никакой новый метод не пишется, ничего не наследуется. string_view это по сути plain-old-data, а НЕ вундер-вафля, его соглашение подразумевает что если нужен asciiz для внешней функции аналога которой нет в string_view - то просто передавай его, без всякого стеснения. my_external_lib_symbol_counting_func(sview.data())
При этом в большинстве даже сишных библиотек - у методов работы со строками есть аргумент длина или вариация его принимающая - и будет удобно вызвать my_external_lib_symbol_counting_func(sview.data(), sview.size())
Исходная версия GPFault, :
Т.е. мы сделали весь из себя класс, типа для строк, загнали туда строку «Привет мир!». Хорошо. А потом оказывается, что посчитать количество символов (не байт) в строке затруднительно, потому что это юникод.
string_view намеренно сделан минимальным. Легковесная замена char*, которая не обязывает с собой таскать тяжёлые вещи.
Поэтому если оказывается что нужна функция подсчёта юникодных символов - то… делается то же что и ASIIZZ - она и вызывается. Никакой новый метод не пишется, ничего не наследуется. string_view это по сути plain-old-data, а НЕ вундер-вафля, его соглашение подразумевает что если нужен asciiz для внешней функции аналога которой нет в string_view - то просто передавай его, без всякого стеснения. my_external_lib_symbol_counting_func(sview.data())
При этом в большинстве даже сишных библиотек - у методов работы со строками есть аргумент длина или вариация его принимающая - и будет удобно вызвать my_external_lib_symbol_counting_func(sview.data(), sview.size())