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

Почему меняется размер строки? - C++

Восстановить пароль Регистрация
 
OlegPL
5 / 5 / 0
Регистрация: 22.10.2013
Сообщений: 100
13.12.2013, 20:29     Почему меняется размер строки? #1
Перегруженный оператор который должен возвращать пересечение двух строк. Но когда пытаюсь создать строку по счетчику, размер будто сам меняется...

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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
my_string my_string::operator*(my_string str)
{
    int check = 0;
    bool flag = false;
    for(int i = 0; i < strlen(_str); i++)
    {
        for(int j = 0; j < strlen(str._str); j++)
        {
            if(_str[i] == str._str[j])
            {
                if(!flag)
                {
                    check++;
                    flag = true;
                }
            }           
        }
        flag = false;
    }
    cout << check << endl;                              // ТУТ УКАЗЫВАЕТ ЧТО ОДИНАКОВЫХ СИМВОЛОВ 2
 
    
    int tmp_count = 0;
    if(_str != nullptr)
        delete [] _str;
    char *_str_new = new char[check];             // А ТУТ РАЗМЕР УЖЕ 14, ПОЧЕМУ ТАК???
    cout << strlen(_str_new) << endl;
    flag = false;
    for(int i = 0; i < strlen(_str); i++)
    {
        for(int j = 0; j < strlen(str._str); j++)
        {
            if(_str[i] == str._str[j])
            {
                if(!flag)
                {
                    _str_new[tmp_count] = str._str[i];
                    tmp_count++;
                    flag = true;
                }
            }           
        }
        flag = false;
    }
    cout << strlen(_str_new) << endl;
 
if(_str != nullptr)
        delete [] _str;
    _str = new char[strlen(_str_new) + 1];
    strcpy(_str, _str_new);
    
    
    return *this;
Добавлено через 18 минут
_str - это поле класса
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 20:29     Почему меняется размер строки?
Посмотрите здесь:

C++ Почему при изменении размера окна не меняется цвет заполнения?
C++ почему не меняется цвет текста?
C++ GetWindowRect() Почему возвращается не тот размер окна?
Почему при применении оператора = меняется правый операнд? C++
C++ почему символ не меняется
Размер контейнера не меняется при изменении итератора C++
C++ Класс,почему не меняется переменная
Длина short[] - Почему размер массива внутри make отличается? C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Black_Thorn
17 / 17 / 1
Регистрация: 06.12.2012
Сообщений: 46
13.12.2013, 23:19     Почему меняется размер строки? #2
Мне кажется -

char *_str_new = new char[check]; // А ТУТ РАЗМЕР УЖЕ 14, ПОЧЕМУ ТАК???
cout << strlen(_str_new) << endl;

_str_new - сейчас только указывает на выделенную область памяти, и не инициализирована - поэтому
strlen(_str_new) - даже не знаю , что вычислит здесь
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
13.12.2013, 23:28     Почему меняется размер строки? #3
Цитата Сообщение от Black_Thorn Посмотреть сообщение
strlen(_str_new) - даже не знаю , что вычислит здесь
strlen() будет перебирать память (начиная с адреса в _str_new) пока не встретит 0 (если её ОС до этого не остановит).
Yandex
Объявления
13.12.2013, 23:28     Почему меняется размер строки?
Ответ Создать тему
Опции темы

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