#include <vector>
int main(int argc, char* argv[])
{
typedef char ShortString[255];
std::vector<ShortString> buf(3);
// не компилируется
ShortString* p = &buf[0]; // этот указатель нужно передать в ф-цию, которая принимает указатель на массив ShortString (а также размер массива, 3 например)
return 0;
}
Не могу сообразить, как мне это правильно сделать.
Здравствуйте, GamerOne, Вы писали:
Массив не обладает свойствами Copy-constructable и Assignable, и не может использоваться в качестве элемента стандартных контейнеров.
Можно, например, вот так:
struct ShortString
{
char str[255];
};
std::vector<ShortString> buf(3);
Здравствуйте, GamerOne, Вы писали:
GO>GO>#include <vector>
GO>int main(int argc, char* argv[])
GO>{
GO> typedef char ShortString[255];
GO> std::vector<ShortString> buf(3);
GO> // не компилируется
GO> ShortString* p = &buf[0]; // этот указатель нужно передать в ф-цию, которая принимает указатель на массив ShortString (а также размер массива, 3 например)
GO> return 0;
GO>}
GO>
GO>Не могу сообразить, как мне это правильно сделать.
А лучше сразу использовать стандартные контейнеры для строк: std::string.
А то вы сказали А (используете vector), не хотите говорить Б
Здравствуйте, saf_e, Вы писали:
...
_>А лучше сразу использовать стандартные контейнеры для строк: std::string.
_>А то вы сказали А (используете vector), не хотите говорить Б
Проблема в том, что нужно взаимодейстовать с сишным интерфейсом.
Здравствуйте, Bell, Вы писали:
B>Здравствуйте, GamerOne, Вы писали:
B>Массив не обладает свойствами Copy-constructable и Assignable, и не может использоваться в качестве элемента стандартных контейнеров.
B>Можно, например, вот так:
B>B>struct ShortString
B>{
B> char str[255];
B>};
B>std::vector<ShortString> buf(3);
B>
спасибо, так и сделал (про Copy-constructable и Assignable) как-то подзабыл.
Здравствуйте, GamerOne, Вы писали:
GO>...
еще вариант:
typedef boost::array<char, 255> ShortString;