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

Проблема с массивом строк - C++

Восстановить пароль Регистрация
 
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
25.07.2012, 16:48     Проблема с массивом строк #1
Доброго времени суток! Есть класс, в котором объявлен массив строк
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class MyClass
{
public:
    MyClass();
    ~MyClass(void);
 
    bool Write(int i);
        void PutValue(int index, char* str);
    char **values;
 
};
MyClass::MyClass()
{
     values = new char* [MAX_VAL];
     for(int i=0; i<MAX_VAL; i++){ 
              values[i] = new char[MAX_SIZE];
         } 
}
C++
1
2
3
4
5
6
7
8
9
10
11
12
void MyClass::PutValue(int index, char* str)
{
    values[index]=str;
    MessageBox(0, values[index],0,0);//здесь выводит строку корректно
 
}
 
bool MyClass::Write(int i)
{
    MessageBox(0, values[i], 0,0);//здесь выводит не строку, а "ММММММ"
    return true;
}
Почему такое происходит и как решить проблему?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 16:48     Проблема с массивом строк
Посмотрите здесь:

Проблема с динамическим массивом C++
Неприятная проблема с массивом строк C++
Проблема с динамическим массивом C++
C++ проблема с массивом
Проблема с двумерным массивом C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,559
Записей в блоге: 17
25.07.2012, 17:03     Проблема с массивом строк #2
Ну не работайте char-ом если не знаете как с ним работать и если не такой необходимости в эффективности используйте std::string.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class MyClass
{
public:
    MyClass(){};
    MyClass(const size_t& max_val);
    ~MyClass(void);
 
    bool Write(int i);
    void PutValue(const size_t& index,const std::string& str);
 
private:
    std::vector<std::string> values;
};
//------------------------------------------------------------------------------------------------------------
MyClass::MyClass(const size_t& max_val)
{
  values.resize(max_val);  
}
//------------------------------------------------------------------------------------------------------------
void MyClass::PutValue(const size_t& index,const std::string& str)
{
    if( index >= values.size() ) return ;
    values[index]=str;
    MessageBoxA(0, values[index].c_str() ,0,0);
}
//------------------------------------------------------------------------------------------------------------ 
bool MyClass::Write(const size_t& index)
{
    if( index >= values.size() ) return 0;
    MessageBoxA(0, values[i].c_str(), 0,0);
    return true;
}
//------------------------------------------------------------------------------------------------------------
edward_jonson
 Аватар для edward_jonson
157 / 157 / 25
Регистрация: 23.02.2011
Сообщений: 388
25.07.2012, 17:14     Проблема с массивом строк #3
C++
1
strcpy(values[index], str);
в 4-й строке второго листинга
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
26.07.2012, 10:18  [ТС]     Проблема с массивом строк #4
Avazart, Спасибо, помогло
edward_jonson, То же спасибо, но да же фигня со строкой
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,559
Записей в блоге: 17
26.07.2012, 10:22     Проблема с массивом строк #5
но да же фигня со строкой
Наверное где-то '\0' в конце строки нехватает.
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
26.07.2012, 10:24  [ТС]     Проблема с массивом строк #6
Хм.. Значит я правильно думал и был близок к цели)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 12:49     Проблема с массивом строк
Еще ссылки по теме:

Проблема с массивом C++
C++ Проблема с массивом.
C++ Определить номера тех строк целочисленной матрицы A[N,K], которые совпадают с массивом D[K], если таких строк нет - выдать соответствующее сообщение

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

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6893 / 5133 / 250
Регистрация: 10.12.2010
Сообщений: 22,559
Записей в блоге: 17
26.07.2012, 12:49     Проблема с массивом строк #7
Вообще-то далеко, так как
C++
1
values[index]=str;
Жесткая ошибка, говорящая о явном не понимании того с имеете дело.
Yandex
Объявления
26.07.2012, 12:49     Проблема с массивом строк
Ответ Создать тему
Опции темы

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