170 похожих чатов

Добрый день! Мне в этом чате утверждали, что лучше использовать контейнеры

плюсов, и при работе с си либой просто передавать .data()

Но у меня возникла проблема с таким советом

#include <iostream>

void fun(char *result) {
std::string info = "hello world";
strncpy(result, info.data(), info.size());
result[info.size()] = '\0';
}

int main() {
std::string str{};
str.reserve(1000);
fun(str.data());
std::cout << "\nString: " << str << '\n';

char *str1 = (char*)malloc(1000*sizeof(char));
fun(str1);
std::cout << "\nChar *: " << str1 << '\n';
return 0;
}

String:

Char *: hello world


Как это понять и исправить?

В cppreference есть несколько перегрузок функций: https://en.cppreference.com/w/cpp/string/basic_string/data
И приписка: Modifying the character array accessed through the const overload of data has undefined behavior.

Следовательно вопрос, как получить именно такую перегрузку функции(без константности): CharT* data() noexcept;

2 ответов

7 просмотров

жесть канеш) тупо все друг друга засирают) я столько токсик диалогов в жизни не читал. могу только посоветовать начинать любой совет со слов “ублюдок мать твою, а ну иди сюда говно собачье, сейчас я тебя научу на С++ писать”

Георгий
жесть канеш) тупо все друг друга засирают) я столь...

Ну и восприятие у тебя действительности. Где ты это здесь прочел?

Похожие вопросы

Обсуждают сегодня

читать файл максимально быстро? странный вопрос))
zamtmn
52
всем привет! углубившись в плюсы и начав изучать реверсинг понял, что без асм'а никуда со своими высокоабстрактными представлениями начал изучать механизмы асма, и не совсем п...
9
Привет. Сразу скажу, что на C/C++/Rust я не пишу, но тем не менее возникла потребность дебага C/C++/Rust кода. Суть: есть серверное приложение, которое периодически ведёт себ...
ninekeem 🐳
4
буквально один оставшийся вопрос при выполнении строчки mov eax, 5 операнд "5" будет присутствовать где-либо в памяти (любой), кроме как в памяти блока .code? подвопрос: как...
12
Всем ку. Подскажите, если задекларировал массив так: int arr[10] = {1, 2, 3, 4}, то в arr[4] будет мусор или нуль?
Sasha K
14
я не понимаю mov [r11+8],rcx и прочие. мы записываем значение из rcx, куда?
Bor
15
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
у меня такой вопрос про память в x86 возник, может кто пояснить?.. у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше)...
Toideng
5
А какие расширения активно используются в промышленности? Именно идейные, по типу гадт, а не всякие оверлоадедстрингс
Степан
11
у процессора есть (как минимум) 3 типа адресов (названия "п1", "п2", "п3" --- мои, чтобы проще было дальше): - "п1" --- виртуальный адрес, то есть тот, который ресолвится в "п...
Toideng
3
Карта сайта