LINUX.ORG.RU

История изменений

Исправление 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())