Yura
ребят, а в дефайне можно принять несколько аргументов как бы?
Yura
например у меня есть #define cout(x) cout«x
Yura
а мне нужно сделать, чтобы не только 1 аргумент как бы дефайнился а например не более 10
Yura
чтобы было что-то типа #define cout(x,y,z) cout«x«y«z
Oleg
define cout(x)
define cout(x, y) ...
Igor
Oleg
Есть гнусное расширение: http://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
Там пишут, что планируется в стандарте в 2a.
Oleg
Oleg
Yura
да мне просто надо исправить кусок чужого кода и мне надо привести к нужному типу... а ручками плохо
Yura
#define c(x) reinterpret_cast<const unsigned char*😠x)
namespace dicts //
{
const unsigned char* buttons[20] = { c("next"),c("install"),c("finish"),c("yes"),c("принять"),"установить","далее","готово","запустить","да"};
const unsigned char* optionalbox[20] = { c("согласен"), c("принять"),c("да"), c("ясогласен"), c("agree"),c("iagree")};
};
Igor
Yura
пришлось это с() писать везде
Ignat
Oleg
Ignat
ну это же треш какой-то :/
Anatoly
почему?
потому что уже есть variadic templates
Oleg
Oleg
у меня пока еще даже std::shared_ptr нет
Anatoly
PRoSToC0der
увидел на cppreference такую запись: expr1 [ { expr, ... } ]
как и для чего её можно использовать?
http://en.cppreference.com/w/cpp/language/operator_member_access#Built-in_subscript_operator
PRoSToC0der
только для std::initializer_list и вызова implicit конструктора или ещё для чего-то можно?
Aidar
Там же написано
Aidar
Чо значит еще
Aidar
В языке с этими скобками можно делать что-то ещё?
PRoSToC0der
ну мало ли
Oleg
плохо
не представляешь как
Anatoly
Matwey
Matwey
x[{i,j,k}]
Andrew
Зачем это, кстати, если то же самое можно сделать через operator[](T args), где у T конструктор от (int i, int j, ...), и тогда компилятор сам угадает {i,j,k}->T{i,j,k}?
Пока в голову идет только разрешение неопределенности, когда есть operator[](T1) и operator[](T2).
Yura
а не знаете как сделать так, чтобы не открывалось консольное окошкоо вообще
Yura
чтоб не появилось и быстро исчезло, а чтоб вообще не открывалось
Andrew
Не открывать его? ;-)
Anatoly
Andrew
Если ты про Qt под винду, то надо какую-то настройку выкрутить. В свое время изи гуглилось.
Igor
а если про VS, то сменить в настройках проекта Linker -> Subsystem с Console на Windows, правда по-моему это сопряжено с мутацией main() в WinMain()
Andy
Добрый вечер
есть std::string в котором двубайтный юникод - json с названиями и коментами сайтов на разных языках
как преобразовать в другой std::string или std::wstring в котором будет уже utf8
тип первого менять нельзя - так приходит с внешней dll
она в нем возвращает любые данные бинарные, в данном случае это юникод с 2 байтами на символ
вот пример
U+007B {
U+0022 "
U+0411 Б
U+0443 у
Constantine
Constantine
в данном случае непонятно, как оно попало в string
Andy
получено с leveldb базы данных
она хранит что угодно в своих полях
и именно std::string использует для обмена
Andy
как я вижу все английские символы и все что в нижней части таблицы записаны как два байта - 0 и код символа
а русские например точно как в Windows-1251
Andy
там могла быть и картинка внутри string
и mp3 файл
что угодно :)
любая последовательность байтов включая 00
Constantine
Andy
https://ru.wikipedia.org/wiki/Windows-1251
Andy
Б
411
Andy
2 байта
именно так как 04 11 и в моем случае выглядит буква Б
Andy
с русскими я бы и сам что то сделал
но могут быть и другие языки
Constantine
Ну технически можно просто взять и reinterpret-cast ить
Constantine
Такой буфер
Matwey
Utf8
Constantine
Потому что речь идет о передаче utf16 строки в качестве std::string что очень странно
Matwey
Не похож...
Andy
ну там универсальное хранилище чего угодно
авторы выбрали string
Constantine
вместо vector<byte> :(
Nikita
или хотя бы vector<char>
Constantine
byte это unsigned char
Constantine
подразумевается
Andy
гугл придумал :)
leveldb
в хромиуме в такой базе хранятся настройки расширений
Constantine
ну можно у них и спросить как они utf16 строки достают из std::string ^)
Nikita
Andy
именно меня интересовало расширение OneTab
хотел чтобы автоматически сохранялся список внешней утилиткой
неожиданно столкнулся с проблемами
я вообще то шарпист и трудно в с++ что то делать
а библиотека под шарп не заработала
передать в шарп со своей длл тоже не выходит пока
только могу сохранить сырые данные в файл пока
Constantine
по стандарту
по стандарту std::byte это отдельный тип)
Sergey
http://www.cplusplus.com/reference/codecvt/codecvt_utf8_utf16/
Anonymous
Вопрос знатокам стандарта: передача памяти, выделенной через std::allocator в std::unique_ptr. Я уверен что это UB, но не могу найти в стандарте упоминания. Может кто ткнуть в нужное место?
Matwey
Anonymous
Речь про дефолтный std::unique_ptr. С делитером там любые извращения доступны, это понятно
Anatoly
Anonymous
Тут, скорее, вопрос в том, можно ли звать delete[] или delete для указателя, который через std::allocator::allocate вернули
Matwey
Я думаю должен быть раздел где написано, что то что вернул allocate нужно класть в deallocate
Anatoly
Anonymous
А вот теперь я ищу ссылку на стандарт, где сказано, что нельзя...
Anatoly
Ignat
Ну delete можно звать от того, что получено через new, или на худой конец от нулла
Matwey
Anonymous
Ага, а где сказано, что std::allocate не использует new или что это implementation specific?
Matwey
нигде не сказано