В одном из разделов Cpp core guidlines говорится о загадочных строковых типах zstring
и czstring
и преимуществах их использования перед классическими char *
. Не смог найти ничего подобного в C++. Подскажите, как подключить и использовать эти типы в своих программах?
P.S. Я знаю, что для хранения строк ещё лучше подойдёт std::string
. Интересуюсь только лишь из любопытства, а не с целью практического использования.
Это типы из библиотеки Guidelines Support Library (есть реализация от Microsoft). Использовать GSL в этой реализации достаточно просто — вся библиотека находится в заголовочных файлах, так что линковать ее не нужно. Достаточно просто скачать из репозитория директорию include/gsl/
и скопировать в папку со своим проектом. Затем прописать путь к заголовочным файлам в настройках компилятора. Для GCC и Clang, например, это будет выглядеть так:
clang -I"include/" ...
Документации я не нашел (может, плохо искал), поэтому о типах можно узнать прямо из заголовочных файлов (нас интересует string_span.h
):
//
// czstring and wzstring
//
// These are "tag" typedefs for C-style strings (i.e. null-terminated character arrays)
// that allow static analysis to help find bugs.
//
// There are no additional features/semantics that we can find a way to add inside the
// type system for these types that will not either incur significant runtime costs or
// (sometimes needlessly) break existing programs when introduced.
//
template <typename CharT, std::ptrdiff_t Extent = dynamic_extent>
using basic_zstring = CharT*;
template <std::ptrdiff_t Extent = dynamic_extent>
using czstring = basic_zstring<const char, Extent>;
...
template <std::ptrdiff_t Extent = dynamic_extent>
using zstring = basic_zstring<char, Extent>;
Используем примерно так:
#include <iostream>
#include <gsl/gsl>
int main()
{
gsl::czstring<> s = "hello, world!\n";
std::cout << s;
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу кроссплатформенное приложениеЗапнулся на сборке инсталлера(использую QtIFW 3
У меня есть следующий код в теле функции идет следующее условие:
Хочу записать данные в файл, но не знаю как сделать так, чтобы записывалось в два столбикаПомогите разобраться
Имеется три переменные типа doubleНужно для первой переменной t сделать 1 знак после запятой, а для двух оставшихся x и y сделать 3 знака после...