Форум программистов, компьютерный форум CyberForum.ru

Инициализация массива строк - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.81
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 08:03     Инициализация массива строк #1
Здравствуйте!
Подскажите, как можно инициализировать массив строковых констант неопределенного размера?
Для инициализации массива неопределенного размера типа float я использовал следующее:

C++
1
2
3
4
5
6
7
8
int main()
{ 
float *energy=NULL;
...
energy=(float*)malloc(number*sizeof(float));
...
return 0;
}
Мне нужно тоже самое, но только не для float, а для строковых констант.
Заранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.05.2011, 08:03     Инициализация массива строк
Посмотрите здесь:

C++ Инициализация массива
Инициализация массива C++
инициализация массива C++
Инициализация массива C++
Инициализация массива объектов C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
solar_wind
 Аватар для solar_wind
740 / 731 / 39
Регистрация: 06.07.2009
Сообщений: 2,937
Завершенные тесты: 1
23.05.2011, 08:15     Инициализация массива строк #2
char**energy;
...
energy=(char**)malloc(number*sizeof(char*));

Что то такое...но нужно проверять, я использую в основном new. В массиве будут ссылки на начало строк.
Danvern
 Аватар для Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:18     Инициализация массива строк #3
ну или так можно
char * name[] = {"1 строка","вторая строка"};
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 08:29  [ТС]     Инициализация массива строк #4
char * name[] = {"1 строка","вторая строка"}; - так не подойдет, т.к. число строк в массиве является переменной. Это мне нужно для того, чтобы считать записи из файла, который выглядит примерно так:

O1 O 0.2125 -0.1482 -0.1194
O2 O 0.0102 -0.1059 -0.0775
C3 C 0.1852 -0.0959 -0.1373
...
C10 C 0.1256 -0.1194 -0.115

и т.д.

Число записей известно, но может варьироваться. Со считыванием чисел и символов все ясно, но как считать первые символы пока не знаю (
Danvern
 Аватар для Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:43     Инициализация массива строк #5
можно попробовать со структурой это сделать.
struct name
{
char n[2];
float f1,f2,f3;
}snm[сколько тебе нужно элементов];
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 08:47  [ТС]     Инициализация массива строк #6
Благодарю, буду пробовать, правда со структурами пока не работал
Danvern
 Аватар для Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:49     Инициализация массива строк #7
я думаю что со структурами твою задачу реализовать будет очень легко..
J10
4 / 4 / 0
Регистрация: 30.04.2011
Сообщений: 50
23.05.2011, 08:50     Инициализация массива строк #8
Как то наверное так:

C++
1
2
3
4
5
6
int count;
int size;
 
const char **p;
 
*p = (const char **)malloc(count*sizeof(double));
А дальше инициализируешь каждую строку:

C++
1
p[count] = (const char *)malloc(size);
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 09:01  [ТС]     Инициализация массива строк #9
Цитата Сообщение от Danvern Посмотреть сообщение
я думаю что со структурами твою задачу реализовать будет очень легко..
Ну видимо придется разбираться с ними )

2 J10 - благодарю, как то так я все и представлял

Добавлено через 5 минут
хотя нет, *p = (const char **)malloc(count*sizeof(double)); - const char ** cannot be assigned to an entity of type const char *
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 09:05     Инициализация массива строк
Еще ссылки по теме:

Инициализация массива строк внутри класса C++
Инициализация массива C++
Инициализация массива C++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
J10
4 / 4 / 0
Регистрация: 30.04.2011
Сообщений: 50
23.05.2011, 09:05     Инициализация массива строк #10
Поторопился, нужно так:

C++
1
2
3
4
5
6
int count;
int size;
 
const char **p;
 
p = (const char **)malloc(count*sizeof(double));
Yandex
Объявления
23.05.2011, 09:05     Инициализация массива строк
Ответ Создать тему
Опции темы

Текущее время: 20:55. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru