массив строк
От: GamerOne Россия  
Дата: 13.04.10 10:30
Оценка:
#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;
}

Не могу сообразить, как мне это правильно сделать.
Re: массив строк
От: Bell Россия  
Дата: 13.04.10 10:39
Оценка: 4 (1)
Здравствуйте, GamerOne, Вы писали:

Массив не обладает свойствами Copy-constructable и Assignable, и не может использоваться в качестве элемента стандартных контейнеров.
Можно, например, вот так:
struct ShortString
{
   char str[255];
};

std::vector<ShortString> buf(3);
Любите книгу — источник знаний (с) М.Горький
Re: массив строк
От: saf_e  
Дата: 13.04.10 11:05
Оценка:
Здравствуйте, 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), не хотите говорить Б
Re[2]: массив строк
От: GamerOne Россия  
Дата: 13.04.10 11:35
Оценка:
Здравствуйте, saf_e, Вы писали:

...
_>А лучше сразу использовать стандартные контейнеры для строк: std::string.

_>А то вы сказали А (используете vector), не хотите говорить Б


Проблема в том, что нужно взаимодейстовать с сишным интерфейсом.
Re[2]: массив строк
От: GamerOne Россия  
Дата: 13.04.10 11:37
Оценка:
Здравствуйте, 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) как-то подзабыл.
Re: массив строк
От: savitar  
Дата: 13.04.10 11:50
Оценка:
Здравствуйте, GamerOne, Вы писали:

GO>...


еще вариант:
typedef boost::array<char, 255> ShortString;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.