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

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

Войти
Регистрация
Восстановить пароль
 
SaJIaManDer
Сообщений: n/a
#1

Написать собственный класс для ввода и вывода строки, подсчета количества символов в строке - C++

11.01.2014, 10:59. Просмотров 783. Ответов 9
Метки нет (Все метки)

как написать собственный с++ класс для ввода и вывода строки, подсчета количества символов в строке
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.01.2014, 10:59
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Написать собственный класс для ввода и вывода строки, подсчета количества символов в строке (C++):

Написать функцию для подсчета нецифровых символов в строке - C++
Подскажите пожалуйста, как написать функцию для подсчета нецифровых символов в строке. Сам не могу догадаться как учесть все нецифровые...

Написать функцию для определения количества цифровых символов в заданной текстовой строке - C++
Написать процедуру/функцию на языке программирования для определения количества цифровых символов в заданнойтекстовой...

Написать класс, для хранения строки символов - C++
Написать класс, для хранения строки символов. Перегрузить операторы «+» и «+=» для соединения двух строк в одну.

Программа для подсчета количества цифр в строке - C++
С клавиатуры вводится строка. Составить программу, которая подсчитывает количество цифр в тексте; выводит на экран слова, начинающиеся с...

Создать контейнер класса с методами включения и удаления строки, очистки текста, подсчета количества символов - C++
Помогите создать контейнер класса который является абстракцией текста с методами включения и удаления строки из текста, очистки текста,...

[Символьная строка] После ввода количества символов в символьной строке, программа прекращает работу - C++
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <locale> int main() { setlocale(LC_ALL, "RUSSIAN"); ...

9
sergei60
47 / 28 / 4
Регистрация: 10.06.2012
Сообщений: 374
11.01.2014, 11:52 #2
Вот похожий вопрос на нашем форуме,может поможет Ввод и вывод строки собственного класса
0
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
11.01.2014, 20:11 #3
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
#include <iostream>
#include <cstring>
 
class String
{
    char *str;
public:
    String()
    {
        *str = '\0';
    }
    String (char* tmp)
    {
        str = new char[strlen(tmp)+1];
        strcpy (str,tmp);
    }
    ~String()
    {
        delete [] str;
    }
    int length()const
    {
        return strlen(str);
    }
    operator char* ()
    {
        return str;
    }
};
 
int main()
{
    String str = "Stroka";
    std::cout <<"Length: " <<str.length() <<'\n'
              <<str <<'\n';
    return 0;
}
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
12.01.2014, 00:53 #4
Цитата Сообщение от MicM Посмотреть сообщение
*str = '\0';
Разыменовываем неинициализированный указатель?
1
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
12.01.2014, 12:24 #5
Цитата Сообщение от rangerx Посмотреть сообщение
Разыменовываем неинициализированный указатель?
Ну да, сглупил, с указателями относительно недавно разбираться начал
Так правильнее будет?
C++
1
2
3
4
5
String()
{
    str = new char[1];
    strcpy (str,"\0");
}
Добавлено через 5 минут
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <cstring>
#include <cctype>
 
class String
{
    char *str;
public:
    String()
    {
        str = new char[1];
        strcpy (str,"\0");
    }
    String (char* tmp)
    {
        str = new char[strlen(tmp)+1];
        strcpy (str,tmp);
    }
    ~String()
    {
        delete [] str;
    }
    int length()const
    {
        return strlen(str);
    }
    operator char* ()
    {
        return str;
    }
    void setString (char* c)
    {
        delete [] str;
        str = new char[strlen(c)+1];
        strcpy (str,c);
    }
};
 
int main()
{
    String str = "Stroka!";
    std::cout <<"Length: " <<str.length() <<'\n'
              <<str <<'\n';
    String s;
    s.setString("Stroka");
    std::cout <<s <<' ' <<s.length() <<'\n';
    return 0;
}
0
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
13.01.2014, 16:52 #6
Цитата Сообщение от MicM Посмотреть сообщение
Так правильнее будет?
Так по крайней мере будет работать. Вот только ф-я strcpy здесь ни к чему, собственно как и явное указание \0 в строковом литерале.
1
MicM
822 / 480 / 90
Регистрация: 29.12.2009
Сообщений: 1,097
Завершенные тесты: 1
13.01.2014, 17:56 #7
rangerx,
Цитата Сообщение от rangerx Посмотреть сообщение
Вот только ф-я strcpy здесь ни к чему
Да, вы правы, заменил на это, ведь в данном случае указатель уже будет инициализирован.
C++
1
*str = '\0';
Цитата Сообщение от rangerx Посмотреть сообщение
собственно как и явное указание \0 в строковом литерале.
Здесь не соглашусь, ведь если создаётся объект этого класса, то по умолчанию строка вроде как должна быть пуста,а без указания '\0' будет выводится мусор. У меня на компиляторе мусор выводится в этом случае.
0
KOPOJI
Модератор
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,879
Завершенные тесты: 1
13.01.2014, 18:09 #8
MicM, а может, лучше просто добавить проверку, заносили туда что-то или нет, или добавить "дефолтное" значение для строки - в методе (т.е., совместить два конструктора) меньше кода - больше кислорода ?
C++
1
2
3
4
5
String (char *tmp = "\0")
{
    str = new char[strlen(tmp)+1];
    strcpy (str,tmp);
}
1
rangerx
1933 / 1542 / 141
Регистрация: 31.05.2009
Сообщений: 2,913
13.01.2014, 18:37 #9
Цитата Сообщение от MicM Посмотреть сообщение
Здесь не соглашусь, ведь если создаётся объект этого класса, то по умолчанию строка вроде как должна быть пуста,а без указания '\0' будет выводится мусор.
Я имел в виду не строку str, а строковый литерал "\0". Даже пустая строка вида "" содержит \0, явно его указывать не нужно.
0
Tulosba
:)
Эксперт С++
4396 / 3232 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
13.01.2014, 21:10 #10
Вот вам всем шикарный вариант реализации строки:
Абстрактный тип данных
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.01.2014, 21:10
Привет! Вот еще темы с ответами:

Написать программу ввода и вывода строки на C++ - C++
Регите пожалуйста !

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

Составить программу для подсчета количества нечетных элементов в каждой строке матрицы - C++
Дана матрица C размером 3*4, составить программу для подсчета количества нечетных элементов в каждой строке матрицы с их запоминанием.

Написать программу подсчета пробелов, символов табуляции и новой строки - C++
Помогите, пожалуйста, уважаемые программисты! Заранее большое спасибо! 1. Написать программу подсчета пробелов, символов табуляции и...


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

Или воспользуйтесь поиском по форуму:
10
Yandex
Объявления
13.01.2014, 21:10
Ответ Создать тему
Опции темы

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