0 / 0 / 0
Регистрация: 16.03.2018
Сообщений: 52
1

E0028 Выражение должно иметь константное значение

08.05.2019, 23:22. Показов 6897. Ответов 3

Здравствуйте! Пытаюсь из std:string сделать char. но возеникает ошибка, Выражение должно иметь константное значение(красным светиться "size31" в char result[size31]) Вот сам код:
C++
1
2
3
const int size31 = conn_addr.size() + 1;
char* result[size31];
strcpy(result, conn_addr123.c_str());
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.05.2019, 23:22
Ответы с готовыми решениями:

Error: Выражение должно иметь константное значение
struct SolderInfo { string rang; string name; int pn; }; using namespace std; int main() ...

Ошибка выражение должно иметь константное значение
Всем привет. Тут такая песня началась забавная. Вообще для начала я хочу выделить очень...

Ошибка: выражение должно иметь константное значение
#include <iostream> #include <stdio.h> #include <stdlib.h> #include <time.h> using namespace...

Выражение должно иметь константное значение (размер матрицы)
Ошибка в строке 12: Выражение должно иметь константное значение Что не так? как исправить? ...

3
3653 / 2990 / 828
Регистрация: 25.03.2012
Сообщений: 11,026
Записей в блоге: 1
09.05.2019, 00:01 2
Цитата Сообщение от KirillConsolelr Посмотреть сообщение
std:string сделать char.
это невозможно, char хранит только 1 символ
Цитата Сообщение от KirillConsolelr Посмотреть сообщение
Выражение должно иметь константное значение
всё верно - надо исправить на заведомо известное значение размера.(и ещё убрать указатель)
C++
1
2
3
const int size31 = 31;
char result[size31];
strcpy(result, conn_addr123.c_str());
а ты как думал? Во всех примерах для Си массивы объявляются фиксированного размера потому что это так нравится авторам? Да нет конечно, но другого пути получить встроенный массив нет.
1
Mental handicap
1245 / 623 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
09.05.2019, 00:21 3
Цитата Сообщение от KirillConsolelr Посмотреть сообщение
Выражение должно иметь константное значение(красным светиться "size31" в char result[size31])
Проблема видимо из-за плохой локализации на русский язык, лучше верните английский, ибо там ошибка должна выглядеть иначе, там должна идити речь о том что функция size() объекта string не объявлена как константа времени компиляции, т.е. не constexpr.
Но это и понятно ибо это тогда не имело смысла, т.к. string это объект ран-тайма, а у нас размер массива уже должен быть известен во время компиляции, вобщем, на что вам и должна была указывать ошибка.
Цитата Сообщение от KirillConsolelr Посмотреть сообщение
Пытаюсь из std:string сделать char.
Что бы получить raw ptr на char из string достаточно вызвать c_str().

Добавлено через 1 минуту
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Во всех примерах для Си
А Си здесь не лучший пример.
1
зомбяк
1562 / 1211 / 344
Регистрация: 14.05.2017
Сообщений: 3,925
09.05.2019, 00:35 4
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
C++
1
strcpy(result, conn_addr123.c_str());
C++
1
2
3
char result[size31+1];
 result[size31]='\0';
strncpy(result, conn_addr123.c_str(), size31);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.05.2019, 00:35
Помогаю со студенческими работами здесь

Выражение должно иметь константное значение. Нужно исправить
#include <iostream> using namespace std; int main(){ int count_string,...

Выражение должно иметь тип класса
Есть класс матрица, содержащий следующие поля: int rows, cols;//количество строк и столбцов...

Выражение должно иметь тип указателя
что тут не так IClientEntity *player=...

Выражение должно иметь тип указателя
#include "stdafx.h" #include <iostream> #include <conio.h> using namespace std; struct laiks...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru