Size: a a a

2021 February 23

S

Stepan in supapro.cxx
Это не явл. ожидаемым же
источник

S

Stepan in supapro.cxx
Исходя из вопроса
источник

s

std::slavik in supapro.cxx
Nastya Medveda
у меня именно так, но оно не работает:
```char* buffer = new char[100];
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout <<
sizeof(buffer)/sizeof(char) << std::endl;```
#include <array>
#include <iostream>
int main(){
   std::array<char, 100> buffer;
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout << buffer.size() << std::endl;
   return 0;
}
источник

MK

Mikhail Kalugin in supapro.cxx
Nastya Medveda
да, оно определяет размер указателя (на моей системе оно 8 байт) и делит на размер чар (1 байт).
В общем либо запоминать размер struct {size_t size; char* buffer;} либо выделять буфер на стеке char buffer[100];
источник

AP

Antony Polukhin in supapro.cxx
Artem
Ток sfml
Есть класс для подсчёта времени sf::Clock https://www.sfml-dev.org/tutorials/1.6/window-time.php

Можно в основном цикле по обработке событий проверять, что прошло нужное время. Однако такой подход может оказаться не самым эффективным. Расскажите больше о задаче, чего хотите добиться?
источник

s

std::slavik in supapro.cxx
std::slavik
#include <array>
#include <iostream>
int main(){
   std::array<char, 100> buffer;
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout << buffer.size() << std::endl;
   return 0;
}
тут при создании массива в него сохраняется его размер
источник

s

std::slavik in supapro.cxx
и вызвав size() - возвращается
источник

Тᅠ

Туночка ᅠᅠ... in supapro.cxx
std::slavik
#include <array>
#include <iostream>
int main(){
   std::array<char, 100> buffer;
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout << buffer.size() << std::endl;
   return 0;
}
но он не динамический
источник

S

Stepan in supapro.cxx
Либо ввести константу, и выделять буферы всегда одинакового размера
источник

DK

David Kravets in supapro.cxx
std::slavik
тут при создании массива в него сохраняется его размер
Зачем сохранять размер Дин массива ? Тогда и переменные нужно для контроля
источник

MK

Mikhail Kalugin in supapro.cxx
David Kravets
Зачем сохранять размер Дин массива ? Тогда и переменные нужно для контроля
а зачем во многих функциях C в параметрах буфер и его размер?
источник

Тᅠ

Туночка ᅠᅠ... in supapro.cxx
std::slavik
#include <array>
#include <iostream>
int main(){
   std::array<char, 100> buffer;
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout << buffer.size() << std::endl;
   return 0;
}
кста а зачем в стл такой класс нужен?
какую задачу он решает?
обработку исключений при не правильном индексе? и все?
єто ж воще бесполезній клас
источник

A

Artem in supapro.cxx
Antony Polukhin
Есть класс для подсчёта времени sf::Clock https://www.sfml-dev.org/tutorials/1.6/window-time.php

Можно в основном цикле по обработке событий проверять, что прошло нужное время. Однако такой подход может оказаться не самым эффективным. Расскажите больше о задаче, чего хотите добиться?
Я пишу игру морской бой, и после хода пользователя должна быть задержа перед ходом бота
источник

NM

Nastya Medveda in supapro.cxx
Mikhail Kalugin
а зачем во многих функциях C в параметрах буфер и его размер?
Потому что тогда еще не изобрели классы, чтоб передавать экземпляр класса, а не вот это вот всё.
источник

MK

Mikhail Kalugin in supapro.cxx
Туночка ᅠᅠ
кста а зачем в стл такой класс нужен?
какую задачу он решает?
обработку исключений при не правильном индексе? и все?
єто ж воще бесполезній клас
Удобная замена массивов в стиле C, с размером и итераторами
источник

s

std::slavik in supapro.cxx
Туночка ᅠᅠ
но он не динамический
#include <vector>
#include <iostream>
int main(){
   std::vector<char> buffer(100);
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout << buffer.size() << std::endl;
   return 0;
}
источник

NM

Nastya Medveda in supapro.cxx
std::slavik
#include <vector>
#include <iostream>
int main(){
   std::vector<char> buffer(100);
   buffer[0] = 't';
   buffer[1] = 'e';
   buffer[2] = 's';
   buffer[3] = 't';
   buffer[4] = '\0';
   std::cout << buffer.size() << std::endl;
   return 0;
}
Спасибо, это все работает, но я с указателями разбираюсь 🙂
источник

s

std::slavik in supapro.cxx
Туночка ᅠᅠ
кста а зачем в стл такой класс нужен?
какую задачу он решает?
обработку исключений при не правильном индексе? и все?
єто ж воще бесполезній клас
дает интерфейс вектора для массива
источник

MK

Mikhail Kalugin in supapro.cxx
Nastya Medveda
Потому что тогда еще не изобрели классы, чтоб передавать экземпляр класса, а не вот это вот всё.
Верно :) и потому, что другого способа определить размер буфера нет.
источник

Тᅠ

Туночка ᅠᅠ... in supapro.cxx
std::slavik
дает интерфейс вектора для массива
источник