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

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

Войти
Регистрация
Восстановить пароль
 
OlegPL
5 / 5 / 0
Регистрация: 22.10.2013
Сообщений: 100
#1

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

13.12.2013, 20:29. Просмотров 257. Ответов 2
Метки нет (Все метки)

Перегруженный оператор который должен возвращать пересечение двух строк. Но когда пытаюсь создать строку по счетчику, размер будто сам меняется...

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++
Почему размер контейнера не меняется? std::string m; std::string::iterator mi = m.begin(); *mi = 'd'; std::cout &lt;&lt; m &lt;&lt;...

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

Почему не меняется цвет текста? - C++
Не пойму почему не меняется цвет текста? void FuncThread(HWND hWnd) { HDC hdc; hdc = GetDC(hWnd); ...

Почему не меняется true/false? - C++
Добрый день! Написал простенькую программу с перегрузкой типов. 24 часовая система переводится в 12 часовую (с pm/am). У меня не...

Класс,почему не меняется переменная - C++
не могу понять почиму не работает &quot;a1=y;&quot;Помогите пожалуста. //Complex.h #include &lt;iostream&gt; using namespace std; class Complex{ ...

Почему меняется значение константной переменной? - C++
Доброго времени суток! Возникла такая проблема. Вовремя выполнения функции меняется значение константного указателя на 0x3f800000. Также...

Почему не меняется imin после первой итерации? - C++
void solution() { bool flag; for (int i =m-2; i&gt;=0; i--) { flag = false; if (imin - 1 &gt;= 0&amp;&amp; imin + 1 &lt;...

Почему при применении оператора = меняется правый операнд? - C++
#include &lt;stdio.h&gt; int main () { int*p; int array ; array = 100; printf (&quot;%d\n&quot;, array ); p= array; printf...

Почему при изменении размера окна не меняется цвет заполнения? - C++
Почему при изменении размера окна не меняется цвет заполнения?:no: ... case WM_PAINT: ... ... ...

Добавлять в исходную строку заданной длины новые строки, пока не будет превышен размер исходной строки - C++
Описать строку из 50 символов. В цикле запрашивать у пользователя строки длиной до 10 символов и добавлять их к исходной до тех пор, пока...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
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
5416 / 4812 / 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     Почему меняется размер строки?
Ответ Создать тему
Опции темы

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