Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/37: Рейтинг темы: голосов - 37, средняя оценка - 4.92
45 / 0 / 0
Регистрация: 10.04.2016
Сообщений: 114

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

22.11.2018, 10:41. Показов 7803. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SUNO Ai - Река Без Дна
zorxor 31.07.2026
Автор стихотворения - астрофизик Марина Катыс Ссылка на сгенерированную музыкальную композицию: https:/ / suno. com/ song/ 6f6e5464-b290-4650-be6c-44c85f8d8013 Я говорю, что Время- как вода течет. . .
Из невошедшего на форум (диалог с ИИ-гугла)
zorxor 29.07.2026
А вот, что интересно, сказал мне ИИ-гугла: Этот текст — эмоциональный пост пользователя под ником zorxor на интернет-форуме (вероятно, посвященном мистике, непознанному или альтернативной науке). . . .
Был праздник вчера, а я и не знал.
kumehtar 28.07.2026
27. 07. 2026г. Intel Core 2 Duo исполнилось 20 лет Новости компьютерного мира и их обсуждение (4) Салют, шампанское, овации! :drink:
Нейтральные знания, чистый код - бла-бла-бла-бла, на самом деле кликбейт и самореклама, плагиат, и вот почему
Hrethgir 27.07.2026
То-есть отклонение такой публикации говорит само за себя, и пусть только возьмут на вооружение после отклонения публикации - это будет чистейшим актом плагиата. Отклонял Хабр. Дословно, отклонённая. . .
тв 16 бой ии
anaschu 27.07.2026
Великий Перелом ИИ: Как уравнения ОДУ Radau дожали цензурные фильтры Алисы Фиксируем в мемофонде Теории Всего беспрецедентный факт в истории ИИ-зондирования. В затяжном многораундовом. . .
мв 15. непроверенное, возможно, глюк
anaschu 27.07.2026
НАУЧНО-АНАЛИТИЧЕСКИЙ ОТЧЕТ. РАЗДЕЛ 1. 1: «НАУКА» (РАСШИРЕННАЯ СТЕХИОМЕТРИЧЕСКАЯ И ГЕНЕТИЧЕСКАЯ ВЕРСИЯ)Тема: Теоретическое обоснование инвариантности 19-мерного тензорного ядра непрерывных ОДУ и. . .
Очистка реквизитов и табличных частей документа при копировании (вариант 2)
Maks 26.07.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРаботу", разработанного в КА2. Задача: Заменить алгоритм запрета копирования документов для сотрудников с ролью "Стажер",. . .
Доктрина интенционального знания - Доктрина для портала "Срез".
Hrethgir 25.07.2026
Может найдётся кто захочет оценить доктрину. . . Написания правил участия для меня роскошь, требующая лимита времени, поэтому все сообщения не прошедшие модерацию будут видны только участникам портала,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru