Я использую код Leagacy C в проекте C ++.
На используемой функции C выглядит так
void Add_To_log(const * const char pString_1, const * const char pString_2, int number);
Теперь, когда я вызываю эту функцию из кода C ++, вот так
foo()
{
Add_To_log("my first string", "my second string", 2);
}
Я получаю предупреждение компилятора ISO C ++ Запрещает преобразование строки в символ.Таким образом, чтобы избавиться от этого, я подумал о создании оболочки с ++ с string_view, чтобы избежать ненужного копирования моих строк
void CPP_Wrapper(const string_view& string1, const string_view& string2, int number)
{
Add_To_log(string1, string2, 2);
}
Теперь, если я правильно понял ссылку, string_view не обязательно содержит завершающий нулевой символ с, это важнодля всех функций c, потому что он не владеет строковым объектом.Он просто отображает его.
Однако могу ли я предположить, что в моем конкретном случае string1 и string2 завершены нулем?