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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.81
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
#1

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

23.05.2011, 08:03. Просмотров 6163. Ответов 9
Метки нет (Все метки)

Здравствуйте!
Подскажите, как можно инициализировать массив строковых констант неопределенного размера?
Для инициализации массива неопределенного размера типа float я использовал следующее:

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

Инициализация массива строк string в классе - C++
Как сделать подскажите? #include <iostream> #include <string> #include <Windows.h> using namespace std; struct structPizza ...

Инициализация массива строк внутри класса - C++
Доброго времени суток! Есть такая проблема... Дан класс, в нем есть массив строк и мне нужно в конструкторе ему задать начальное значение,...

Инициализация массива - C++
Есть массив: int d; Есть константа бесконечности (просто константа) inf, равная 2^30. Я попытался проинициализировать массив этой...

Инициализация массива - C++
Нужно объявить несколько статических строк, содержащих байты со значениями в диапазоне от 1 до 255 Пытаюсь что-то в этом духе: ...

инициализация массива - C++
Доброго времени. Инициализация массива с указанием размера 80 проходит гладко, при указании допустимого размера 12 выдает ошибку. Почему?

Инициализация массива - C++
int ** mas, n; cout << "Введите порядок треугольника паскаля: " << endl; cin >> n; mas = new int * ; for (int i = 0; i < n;...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
solar_wind
756 / 747 / 42
Регистрация: 06.07.2009
Сообщений: 2,969
Завершенные тесты: 1
23.05.2011, 08:15 #2
char**energy;
...
energy=(char**)malloc(number*sizeof(char*));

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

и т.д.

Число записей известно, но может варьироваться. Со считыванием чисел и символов все ясно, но как считать первые символы пока не знаю (
0
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[сколько тебе нужно элементов];
1
lokinian
0 / 0 / 0
Регистрация: 09.03.2011
Сообщений: 7
23.05.2011, 08:47  [ТС] #6
Благодарю, буду пробовать, правда со структурами пока не работал
0
Danvern
40 / 39 / 3
Регистрация: 22.06.2010
Сообщений: 415
Записей в блоге: 1
23.05.2011, 08:49 #7
я думаю что со структурами твою задачу реализовать будет очень легко..
0
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);
1
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 *
0
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));
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.05.2011, 09:05
Привет! Вот еще темы с ответами:

Инициализация массива C++ - C++
Почему, если мы не инициализируем переменную, то при попытке работы с ней будет ошибка int main(){ char x; cout << x; ...

Инициализация массива - C++
Здравствуйте! хм... сначала написал так. POINT p={00,00,10,10,10,10,10,10}; потом подумал, решил написать так. POINT...

Инициализация двумерного массива - C++
Учу С++ и переделываю шахматы в ооп. Не получается написать конструктор для двумерного массива. На С было: int position = { {...

Инициализация массива интервалом - C++
Доброго времени суток! Подскажите пожалуйста, как присвоить массиву интервал значений (диапазон) Например: int array1 = {100...1000}. В...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.05.2011, 09:05
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru