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

Что делает отператор Strlen? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 29, средняя оценка - 5.00
Профан
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 49
03.07.2011, 20:56     Что делает отператор Strlen? #1
Подскажите то делает в С++ "strlen"
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2011, 20:56     Что делает отператор Strlen?
Посмотрите здесь:

что делает оператор? C++
C++ Что делает программа?
C++ Что это за метод?И что он делает?
Что выполняет функция strlen()? C++
C++ Что делает функция strlen() ?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.07.2011, 20:57     Что делает отператор Strlen? #2
Возвращает длину строку без учета '\0'
Профан
0 / 0 / 0
Регистрация: 06.06.2011
Сообщений: 49
03.07.2011, 21:31  [ТС]     Что делает отператор Strlen? #3
Немного не понял смотри вот кусок программы

C++
1
2
3
4
5
6
7
8
Mason::Mason( const char *name_w, double B )
{
name = new char[strlen(name_w)+1];
strcpy( name, name_w );
b = B;
h = 0;
N = 0;
}
от этой :
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <cstring>
#include <cmath>
 
using namespace std;
 
class Mason {
private:
char *name;
double b;
int N;
double h;
 
public:
const static int N0 = 200;
Mason(const char *name_w, double B);
Mason(const Mason &obj);
~Mason();
double build(int t);
const char* GetName() const { return name; }
int min(int N) { if(N>=N0) return N0; else return N; }
void PrintName() { cout << name << ": "; }
};
 
Mason::Mason( const char *name_w, double B )
{
name = new char[strlen(name_w)+1];
strcpy( name, name_w );
b = B;
h = 0;
N = 0;
}
 
Mason::~Mason()
{
delete[] name;
name = 0;
}
 
Mason::Mason( const Mason &obj )
{
name = new char[strlen(obj.name)+1];
b = obj.b;
h = obj.h;
strcpy(name, obj.name);
}
 
double Mason::build( int t = 130 )
{
 
int min_N = min(t);
h = 10 * sqrt( min_N * (1 - b));
//cout << "b = " << b << ' ' << "N0 = " << N0 <<' ';
return h;
}
 
int main(int argc, char *argv[])
{
Mason ob1( "Vladimir", 0.9 );
ob1.PrintName();
cout << ob1.build(130) << "\n\n";
 
Mason ob2( "Misha", 0.9 );
ob2.PrintName();
cout << ob2.build(230) << "\n\n";
 
Mason ob3( "Aleksey", 0.9 );
ob3.PrintName();
cout << ob3.build(200) << "\n\n";
 
Mason ob4( "Andrei", 0.8 );
ob2 = ob4;
ob4.PrintName();
cout << ob4.build(199) << "\n\n\n";
 
//ob2 = ob4;
ob2.PrintName();
cout << ob2.build(300) << endl;
 
return 0;
}
И как работает strlen

а также подскажите что выполняет этот кусочек:
C++
1
2
3
4
5
6
7
Mason::Mason( const Mason &obj )
{
name = new char[strlen(obj.name)+1];
b = obj.b;
h = obj.h;
strcpy(name, obj.name);
}
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
03.07.2011, 21:34     Что делает отператор Strlen? #4
Цитата Сообщение от Профан Посмотреть сообщение
name = new char[strlen(name_w)+1];
strcpy( name, name_w );
Выделяет под name количество памяти, необходимое чтобы туда вместилась вторая строка. Т.е. количество символов + 1(место под '\0')
И в следующей строке копирует name_w в name
Yandex
Объявления
03.07.2011, 21:34     Что делает отператор Strlen?
Ответ Создать тему
Опции темы

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