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

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

Войти
Регистрация
Восстановить пароль
 
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
#1

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

25.07.2012, 16:48. Просмотров 334. Ответов 6
Метки нет (Все метки)

Доброго времени суток! Есть класс, в котором объявлен массив строк
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;
}
Почему такое происходит и как решить проблему?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.07.2012, 16:48
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Проблема с массивом строк (C++):

Неприятная проблема с массивом строк - C++
Здравствуйте! Пытаюсь записать в массив строк содержимое директории.. Всё содержимое находит, но на выходе весь массив почему-то заполнен...

Проблема с массивом - C++
Здравствуйте. Задача: умножение матрицы на число. Проблема: корректно выводятся только 2, 5, 6, 7, 8 и 9 элементы массива. Причем...

Проблема с массивом. - C++
Приветствую,возникла некоторая проблема в решение данной задачи:Разделить массив на две части, поместив в первую элементы, большие среднего...

проблема с массивом - C++
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main(){ const int n = 3; ...

Проблема с динамическим массивом - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;conio.h&gt; using namespace std; int l,r,i=0,j=0,k=0,k1=0,k2=0,x=2,z=1;int ost; int...

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

6
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,945
Записей в блоге: 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;
}
//------------------------------------------------------------------------------------------------------------
1
edward_jonson
158 / 158 / 25
Регистрация: 23.02.2011
Сообщений: 392
25.07.2012, 17:14 #3
C++
1
strcpy(values[index], str);
в 4-й строке второго листинга
1
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
26.07.2012, 10:18  [ТС] #4
Avazart, Спасибо, помогло
edward_jonson, То же спасибо, но да же фигня со строкой
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,945
Записей в блоге: 17
26.07.2012, 10:22 #5
но да же фигня со строкой
Наверное где-то '\0' в конце строки нехватает.
0
kveigs
16 / 16 / 2
Регистрация: 20.03.2010
Сообщений: 85
26.07.2012, 10:24  [ТС] #6
Хм.. Значит я правильно думал и был близок к цели)
0
Avazart
Нарушитель
Эксперт С++
7232 / 5404 / 293
Регистрация: 10.12.2010
Сообщений: 23,945
Записей в блоге: 17
26.07.2012, 12:49 #7
Вообще-то далеко, так как
C++
1
values[index]=str;
Жесткая ошибка, говорящая о явном не понимании того с имеете дело.
0
26.07.2012, 12:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2012, 12:49
Привет! Вот еще темы с ответами:

Проблема с классом и массивом char-ов - C++
Есть класс, содержащий одномерный массив из char-ов и методы для работы с ним. Проблема возникла в самом начале - не получается корректно...

проблема с массивом типа CHAR - C++
нужно выполнить функцию fopen() . которая кушает на вход указатель на массив char в качестве пути к файлу ну и режим работы с файлом. ...

сложение по модулю 2(проблема с массивом bool) - C++
#include &lt;iostream.h&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; using namespace std; int main(){ int i; bool m; bool k; bool e;...

Проблема с массивом. Выводится только один элемент матрицы. - C++
Здравствуйте. Программа должна считывать данные из файла (матрицу 128х128), записывать их в двумерный массив и выводить на экран. Я...


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

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

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