Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа со строками (С++)

73K
01 октября 2011 года
Альтер Эго
5 / / 01.10.2011
В общем, проблема: нужно написать программу, которая будет проверять количество символов в заданной строке и, если оно нечетное, то будет копировать содержимое этой строки после первого пробела. Дальше необходимо вывести обе строки, новую и первоначальную. Сделать это нужно через объекты класса и перегрузку "=". Код вроде верный, но не работает=)
Только учусь языку, подскажите, где ошибка? И, если не сложно, может есть пожеланий и предложения по коду?
Код:
#include <iostream>
#include <string.h>
#define size 255

using namespace std;

class String
{
    char *one;
public:
    String();
    ~String ();
    void set(char *);
    void print();

void operator= (String& a)
{
    if (strlen(one) % 2 != 0 && strchr(one,4644908)!=NULL)
    {
        cout<<"hi"<<endl;
        strcpy(a.one,(strpbrk(one," ")+1));
    }
}
};

String::String()
{
    &#111;&#110;e=new char[size];
    one[0]='\0';
}

String::~String()
{  
    delete one;
}

void String::set(char *str)
{
    strcpy(str, one);
}

void String::print()
{
    cout<<one<<endl;
}


int main ()
{
    String str1, str2;
    char *s;
    s=new char[size];
    cout<<"You string:"<<endl;
    cin.getline(s,size);
    str1.set(s);
    str2 = str1;
    str1.print();
    str2.print();
    delete s;
    return 0;
}
87
01 октября 2011 года
Kogrom
2.7K / / 02.02.2008
Поменяй сигнатуры:

void String::set(char *str) на void String::set(const char *str)
void operator= (String& a) на void operator= (const String& a)

Возможно, после прочтения сообщений компилятора появятся идеи.
316
02 октября 2011 года
Alm3n
889 / / 29.05.2009
Поменяй местами аргументы strcpy(str, one);
Оператор = должен возвращать ссылку на объект.
Цитата:

strlen([COLOR="red"]a.[/COLOR]one) % 2 != 0 && strchr([COLOR="red"]a.[/COLOR]one,' ')!=NULL
strcpy(one,(strpbrk([COLOR="red"]a.[/COLOR]one," ")+1));

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог