45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114

Strcpy() и работа с char-данными в классах

22.11.2018, 10:41. Показов 7818. Ответов 42

Студворк — интернет-сервис помощи студентам
Ребят, всем мира!
Такой вопрос: насколько я знаю функция strcpy имеет такой прототип strcpy(char"cтрока, в которую записываем", char "строка, которую записываем в строку, стоящую перед запятой"). Если это так, то почему именно такой синтаксис в данном случае:
Код:
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
54
55
56
57
#include "pch.h"
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
 
class sub {
    char string[80];
public:
    sub(const char *ir = "Default") { strcpy(string, ir); }
    void show() { cout << string << '\n'; }
 
    sub operator-(sub ob);
    sub operator=(sub ob);
    friend void func(char *i);
    sub set_string(sub &ob);
    sub find_string(sub &ob);
 
};
 
sub sub::set_string(sub &ob)
{
    cout << "Enter the string you want to edit: ";
    char v[80];
    gets_s(v);
    strcpy(ob.string, v);
    return *this;
}
 
sub sub::find_string(sub &ob)
{
    cout << "Enter the string you want to find: ";
    char v[80];
    gets_s(v);
    strcpy(ob.string, v);
    return *this;
}
 
sub sub::operator=(sub ob)
{
    strcpy(string, ob.string);
    return *this;
}
 
int main()
{
    sub str("Ruslan"), str2;
    str.show();
    str.set_string(str);
    str.show();
    str2.show();
    str2.find_string(str2);
    str2.show();
    str2 = "Pochemubiinet";
    str2.show();
    return 0;
}
непонятное место -
C++
1
2
3
4
5
sub sub::operator=(sub ob)
{
    strcpy(string, ob.string);
    return *this;
}
Точнее я понимаю все (сам писал), но непонятно следующее: По логике, я должен в строку объекта передать новую стороннюю строку, которая стоит после знака присваивания. Однако тут все наоборот - в string записывается ob.string и все работает. Если сделать по моей логике, то не работает. Почему?
Может я не понимаю семантики перегрузки операторов...?
P.S. программа еще не дописана, поэтому прошу не обращать внимание на еще не расписанные функции-члены класса.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.11.2018, 10:41
Ответы с готовыми решениями:

Использование char* в классах
Всем доброе время суток! В общем пытаюсь создать простейший класс с использованием char* для представления строк При компиляции...

Написать программу: работа с си строками, функции strlen, strcpy
С помощью данного алгоритма нужно вставить слово в конец и начало строки. С помощью strlen() узнать длину строки и длину слова, после...

Работа со строками - Invalid conversion from 'char' to 'const char*'
#include &lt;iostream&gt; #include &lt;ctype.h&gt; #include &lt;stdio.h&gt; #include &lt;string.h&gt; using namespace std; void poisk(int n, char...

42
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
22.11.2018, 14:44
Студворк — интернет-сервис помощи студентам
3) если хочешь "обнулить строку char[] ", впиши в её нулевой элемент 0 или символ '\0' (который соответствует 0 )
C++
1
string[0] = '\0';
1
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114
22.11.2018, 14:46  [ТС]
За книгу спасибо!
С strcmp получилось. Эх. не люблю я со строками работать. какие-то они корявые для понимания. функции свои, с которыми только они работают... Ладно, прорвемся.
Спасибо всем большое!!! Вы лучшие!
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
22.11.2018, 15:06
Цитата Сообщение от Руслан92 Посмотреть сообщение
функции свои, с которыми только они работают...
Потом со временем почитаешь по std::string, там свои функции, свои особенности .
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.11.2018, 15:06

работа с массивами в классах
Доброго времени суток! Полскажите пожалуйста если мы в программе создаем массив то можем написать так: const int MAX =10; int arr ...

Объекты в классах, работа с функциями C++
Снизу код, там через классы и функции в нём идёт ввод данных окружности, а также их вывод, по заданию - необходимо добавить ещё один...

Работа с одной переменной в двух классах
Как из класса &quot;FormА.cs&quot; переменную &quot;А1&quot; сделать доступной в классе &quot;FormB.cs&quot; ? Говорят нужно добавить ссылку на проект, но как ? Я...


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

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

Новые блоги и статьи
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео: https:/ / vkvideo. ru/ video-240781534_456239017 YouTube: eY5-5PyI9NM Текстовая версия
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru