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

Использование класса String - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Посчитать, сколько раз встречается каждая буква в двух текстах http://www.cyberforum.ru/cpp-beginners/thread165449.html
мне нужно посчитать сколько раз встречается каждая буква в двух текстах. но почему-то в первом он считает правильно, а во втором тоже считает верно, но при этом прибавляем уже к найденным результатам из первого текста. а мне надо отдельно. #include "stdafx.h" #include <stdio.h> #include <windows.h> #include <wincon.h> #include <fstream> #include <iostream> #include <map> #include...
C++ Установка clapack Мир вам! Я хочу подключить к моему проекту библиотеки clapack. В руководстве по установке (http://www.netlib.org/clapack/readme.install) сказано: Procedure for installing CLAPACK: ============================================================================== (1) 'tar xvf clapack.tar' to build the following directory structure: Где именно нужно набирать эту команду? http://www.cyberforum.ru/cpp-beginners/thread165402.html
Правильно ли я разбил программу на потоки? C++
Посмотрите пожалуйста, правильно ли я разбил программу на потоки ? При компиляции ошибок не было результат корректный дало. Но тем не менее, меня интересует именно правильность разбиения данной программы на потоки. #include <iostream> #include <pthread.h> int S=0; int i; int j; int k; void * func_first(void * args) {
Функция возвращает "-1.#IND" C++
Прогал задачку по вычматам, на выходе получаю символ "-1.#IND". Вроде, это бесконечность. Подскажите, пожалуйста, в чем ошибка? Прога выводит это на экран, даже если заставить dichotomy возвращать 0, т.е. дело не в переменной "с". Сделал ее глобальной и посмотрел, с ней все в порядке. #include "stdafx.h" #include <iostream> using namespace std; double func( double X ) {return X;}
C++ Одномерный массив с проверкой элементов на повтор http://www.cyberforum.ru/cpp-beginners/thread165364.html
Доброе время суток, сегодня первый день изучаю язык Си...дали задание: Сгенерировать одномерный массив (размер 5 или 6, который задаёт пользователь) так, чтобы цифры в нем не повторялись. вот, что у меня вышло: #include <iostream.h> #include <stdlib.h> main() { int n; while ((n!=1) && (n!=2))
C++ Обход доски есть фигура, которая может ходить вперед, вперед-влево, вперед-вправо, назад-влево и назад-вправо ка показано на рисунке. даны координаты этой фигуры а также координаты финиша. на пути у фигуры есть преграды их координаты тоже даны. нужно определить за какое минимальное количество ходов фигура пройдет от старта до финиша пример координаты старта 2 2 координаты финиша 4 4 координаты... подробнее

Показать сообщение отдельно
ForEveR
В астрале
Эксперт С++
7970 / 4732 / 320
Регистрация: 24.06.2010
Сообщений: 10,541
Завершенные тесты: 3
13.09.2010, 19:11     Использование класса String
rhsGetLen();

Да нет же у вас этой функции. Есть GetLen();

C++
1
for (unsigned short j = 0; j<rhs.GetLen(); j++; i++)
Что вы тут делаете? оО. Ну как минимум. Тут перед i не точка с запятой, а запятая. + Какой-то странный цикл.

C++
1
String.s1{"initial test"};
Меняем на

C++
1
String s1("initial test");
Добавлено через 4 минуты
Компилируется. Запускается. Может быть даже так как нужно

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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
//Использование класса string.
#include <iostream>
#include <string.h>
 
using namespace std;
 
class String
{
      public:
            //Конструкторы
             String();
             String(const char *const);
             String(const String &);
             ~String();
             
             //Перегруженные операторы
             char & operator[](unsigned short offset);
             char operator[](unsigned short offset) const;
             String operator+(const String&);
             void operator+=(const String&);
             String & operator= (const String &);
             
             //Основные методы доступа
             unsigned short GetLen()const { return itsLen; }
             const char * GetString()const { return itsString; }
      private:
              String (unsigned short);//закрытый конструктоп
              char * itsString;
              unsigned short itsLen;
};
 
//Конструктор. заданный по умолчанию создаёт строку нулевой длины.
String::String()
{
        itsString = new char[1];
        itsString[0] = '\0';
        itsLen=0;
}
 
//Закрытый конструктор 
//используется только методами класса для создания строк требуемой длины
String::String(unsigned short len)
{
        itsString = new char[len+1];
        for (unsigned short i = 0; i<=len; i++)
        itsString[i] = '\0';
        itsLen=len;
}
//преобразование массива символов в строку.
String::String(const char * const cString)
{
       itsLen = strlen(cString);
       itsString = new char[itsLen+1];
       for (unsigned short i = 0; i<itsLen; i++)
       itsString[i] = cString[i];
       itsString[itsLen] ='\0';
}
//Конструктор-копировщик
String::String (const String & rhs)
{
               itsLen=rhs.GetLen();
               itsString = new char[itsLen+1];
               for (unsigned short i = 0; i<itsLen; i++)
               itsString[i] = rhs[i];
               itsString[itsLen] ='\0';
}
//Деструктор для освобожденияпамяти
String::~String()
{
                delete [] itsString;
                itsLen = 0;
}
//оператор присваиания освобождает память и копирует туда string и size
String& String::operator=(const String & rhs)
{
        if(this == &rhs)
        return *this;
        delete [] itsString;
        itsLen=rhs.GetLen();
        itsString = new char[itsLen+1];
        for (unsigned short i = 0; i<itsLen; i++)
        itsString[i] = rhs[i];
        itsString[itsLen] ='\0';
        return *this;
}
//Неконстантный оператор индексирования
//возвращает ссылку на символ так. что его можно изменить!
char & String::operator[](unsigned short offset)
{
     if (offset > itsLen)
     return itsString[itsLen-1];
     else
     return itsString[offset];
}
 
//Константный оператор индексирования для работы с константными обьектами
char String::operator[](unsigned short offset) const
{
     if (offset > itsLen)
     return itsString[itsLen-1];
     else
     return itsString[offset];
}
 
//Создание новой строки путём добавления текущей строки к  rhs
String String::operator+(const String& rhs)
{
        unsigned short totalLen = itsLen + rhs.GetLen();
        String temp(totalLen);
        unsigned short  i;
        for (i = 0; i<itsLen; i++)
        temp[i] = itsString[i];
        for (unsigned short j = 0; j<rhs.GetLen(); j++, i++)
        temp[i] = rhs[j];
        temp[totalLen]='\0';
        return temp;
}
 
//Изменяет текущую строку и возвращает void
void String::operator+=(const String& rhs)
{
     unsigned short rhsLen = rhs.GetLen();
     unsigned short totalLen = itsLen + rhsLen;
     String temp(totalLen);
     unsigned short  i;
     for (i = 0; i<itsLen; i++)
     temp[i] = itsString[i];
     for (unsigned short j = 0; j<rhs.GetLen(); j++, i++)
     temp[i] = rhs[i-itsLen];
     temp[totalLen]='\0';
     *this = temp;
}
 
int main()
{
    String s1("initial test");
    cout << "S1:\t" << s1.GetString() << endl;
    
    char * temp = "Hello World";
    s1 = temp;
    cout << "S1\t" << s1.GetString() << endl;
    
    char tempTwo[20];
    strcpy(tempTwo, "; nice to be here!");
    s1+= tempTwo;
    cout << "TempTwo;\t" << tempTwo << endl;
    cout << "S1\t" << s1.GetString() << endl;
    
    cout << "S1[4]\t" << s1[4] <<endl;
    s1[4]='0';
    cout << "S1\t" << s1.GetString() << endl;
    
    cout << "S1[4]\t" << s1[4] <<endl;
    s1[4]='o';
    cout << "S1\t" << s1.GetString() << endl;
 
    cout << "S1[999]\t" << s1[999] <<endl;
    
    String s2(" Another string");
    String s3;
    s3 = s1 + s2;
    cout << "S3:\t" << s3.GetString() << endl;
    
    String s4;
    s4 = "Why does this work&";
    cout << "S4:\t" << s4.GetString() << endl;
    system("PAUSE");
    return 0;
}
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru