LINUX.ORG.RU

c++ array of strings


0

2

На c++ совсем не пишу. Нужна помощь.

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

>Без всяких векторов и прочего, только простыми средствами

Вон из профессии!

anonymous
()

> Без всяких векторов и прочего, только простыми средствами.

Что за фобия?! Студент шо ле? Вектор как раз и является простым средством.

anonymous
()
Ответ на: комментарий от anonymous

Что было не понятно? Человек ошибся, хотел сказать «классов строк». Нужно сделать на простом массиве char*'ов. Это микроконтроллер, какие там std:string.

JackDaniel
() автор топика
Ответ на: комментарий от JackDaniel

>Это микроконтроллер

Тогда зачем там C++?

anonymous
()
Ответ на: комментарий от JackDaniel

> Это микроконтроллер, какие там std:string.

Микроконтроллер микроконтроллеру рознь: у одних нормальный C++, а у других даже динамической памяти нет.

anonymous
()

точно так же, как и в С:

#include <cstdlib>
#include <cstring>

#define COUNT 100

int main( void )
{
	char** arr = (char**) malloc( COUNT * sizeof * arr );
	
	size_t i;
	for( i = 0 ; i < COUNT ; ++i )
		arr[ i ] = strdup( "test" );
	
	...
	
	for( i = 0 ; i < COUNT ; ++i )
		free( arr[ i ] );
	
	free( arr );
}
aho
()
Ответ на: комментарий от aho

> COUNT * sizeof * arr

Щи то?

strdup( «test» )

strdup уже в стандарте? И вообще кроме заголовков здесь ничего не напоминает о С++.

anonymous
()
Ответ на: комментарий от anonymous

> Щи то?

анонимус не знает стандартов?

strdup уже в стандарте?


нет конечно, но gcc/icc/msvc/clang etc. данный _пример_ соберется

И вообще кроме заголовков здесь ничего не напоминает о С++.


«точно так же, как и в С»

aho
()
Ответ на: комментарий от aho

> анонимус не знает стандартов?

Просто aho не умеет писать читабельный код.

нет конечно, но gcc/icc/msvc/clang etc. данный _пример_ соберется

По заявлениям ТС'a у него микроконтроллер, а С++ компилятор для него ничего толком не умеет делать.

«точно так же, как и в С»

Поменял расширение файла, стиль заголовков... Молодец!

anonymous
()
Ответ на: комментарий от anonymous

> Просто aho не умеет писать читабельный код.

не отмазывайся, там все очевидно

а С++ компилятор для него ничего толком не умеет делать.


я сомневаюсь, что он к себе в код скопирует strdup( «test» )

Поменял расширение файла, стиль заголовков... Молодец!


да, я считаю, что на С++ можно и нужно писать в С-стиле, если того требует задача, что-то не так? может там нужно new/delete, reinterpret_cast, еще что-то?

aho
()
Ответ на: комментарий от annulen

> в gcc 2.95 не соберется, я гарантирую это

значит ваша гарантия ничего не стоит ;) просто добавьте "-liberty"

aho
()

std::vector<std::string>. Ну или std::list, по задаче (прозреваю, что оно будет даже актуальней)

yoghurt ★★★★★
()
Ответ на: комментарий от JackDaniel

Это микроконтроллер, какие там std:string

Так бы сразу и сказали

char **array_of_strings = malloc(sizeof(char *) * N);
array_of_strings[0] = strdup("Some shit");
yoghurt ★★★★★
()
Ответ на: комментарий от aho

>C с классами

В данном случае формулировка имеет значение. Написал бы Си, никакой двусмысленности не было бы.

CrossFire ★★★★★
()
Ответ на: комментарий от annulen

в gcc 2.95 не соберется, я гарантирую это

Не порите чушь. Сейчас, как раз, пишу программы под этот компилятор, и данный пример прекрасно собирается

Torvus
()
Ответ на: комментарий от Reset

особо умиляют узколобые создания все время кричащие про c++ way в их маленький мозг даже и мысли не может придти что иногда удобней писать в plain C стиле

anonymous
()
Ответ на: комментарий от aho

да, я считаю, что на С++ можно и нужно писать в С-стиле, если того требует задача, что-то не так? может там нужно new/delete, reinterpret_cast, еще что-то?

да не объясняй ты им это же ограниченные узколобые твари не понимающие что когда пишеш на C++ есть прекрасная возможность использовать оба языка C и C++ а не только C++

anonymous
()
Ответ на: комментарий от anonymous

Я не спорю, что есть уникумы, которым удобно дрочить вприсядку, стоя в гамаке. Но не надо выдавать эту свою «особенность» за чужую узколобость.

Reset ★★★★★
()
Ответ на: комментарий от anonymous

[..]иногда удобней писать в plain C стиле

даже если язык Java

// кто потом твои писанину читать будет, я ему не завидую

shty ★★★★★
()

На c++ совсем не пишу.

а на чём пишешь?

shty ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.