string
|
Новый участник Сообщения: 15 |
Профиль | Отправить PM | Цитировать Есть класс string ,помогите дописать конструктор по умолчанию, позволяющий создать строку длиной 80 символов вот код:
#include <string.h> #include <stdio.h> class String { public: ~String(); String(); String(char*); const String& operator= (char*); const String& operator+ (char*); operator char*(); char* GetBuffer(); private: char* buffer; }; String::~String(){ delete buffer; } String::String() { buffer = 0; } String::String(char* string) { buffer = new char[strlen(string)+1]; strcpy(buffer, string); } char* String::GetBuffer() { return buffer; } String::operator char*() { return buffer; } const String& String::operator= (char* string) { delete buffer; buffer = new char[strlen(string)+1]; strcpy(buffer,string); return *this; } const String& String::operator+ (char* string) { int len = strlen(buffer)+1; char* old_buff = new char[len]; strcpy(old_buff,buffer); delete buffer; buffer = new char[len + strlen(string) + 1]; strcpy(buffer,old_buff); strcat(buffer,string); delete old_buff; return *this; } int main() { String string; string="I Love"; string = string + " C++"; printf("%s",string); scanf("x"); return 0; } |
|
Отправлено: 06:15, 02-03-2006 |
Ветеран Сообщения: 1864
|
Профиль | Отправить PM | Цитировать Цитата:
Чтобы создать определённого размера, то надо взять другую часть этого кода, а именно Цитата:
|
||
------- Отправлено: 10:37, 02-03-2006 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 1180
|
Профиль | Отправить PM | Цитировать Несколько замечаний по поводу стиля:
String::String(char*); // вообще говоря, тогда String str("I Love"); не должно откомпилироваться. // думаю, что вы компилируете с помощью Borland C++ Builder // лучше String::String(const char*) - вы ведь строку не меняете. const String& String::operator=(char*) // как тогда сделать (str="abc") += "def"? // лучше const char* // где оператор копирования? // по умолчанию: String::String(const String& str) : buffer(str.buffer) {} // что, конечно же, ошибочно (попробуйте удалить строку и её копию) const String& String::operator+(char*) // как вы себе представляете действие c = a + b? (у вас c = a+=b) // лучше const char* // учитывая все ошибки, предлагаю переписать класс следующим образом // я приведу описание класса, а вы можете раскрыть содержимое сами: class String { char* fbuffer; public: String(); String(const char* data); String(const char* data, int size); String(const char init_symbol, int size=80); String(const String&); ~String(); String& operator+=(const String&); String& operator=(const String&); friend String operator+(const String&,const String&); int size() const; const char* c_str() const; // getBuffer() char& operator[](int n) {return fbuffer[n];} char& at(int n) throw(std::out_of_range); const char& operator[](int n) const {return fbuffer[n];} const char& at(int n) const throw(std::out_of_range); }; class String { char* fbuffer; unsigned fcapacity; // current buffer size unsigned fsize; // current string size, < buffer size; fbuffer[fsize] = 0 public: ... } typedef std::basic_string<char, std::char_traits<char>, std::allocator<char> > string; // обычная строка typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, std::allocator<wchar_t> > wstring; // обычная уникодовская строка #include <string> #include <iostream> int main() { // классы стандартной библиотеки обладают: // высокой производительностью, // устойчивостью к исключениям, // гибкостью в конструировании, // строго соответствуют правилам C++. std::string string = "I Love"; std::cout << (string+=" C++") << "\n"; std::string s(80, '?'); std::cout << s << "\n"; return 0; } |
Отправлено: 12:22, 07-03-2006 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Delphi - перевод String to PAnsiChar (Запуск других приложений) | TOOX | Программирование и базы данных | 4 | 21-05-2010 12:51 | |
PowerShell - [блог] Регулярные выражения – Select-String | Xaegr | Скриптовые языки администрирования Windows | 0 | 28-12-2009 18:30 | |
string | farik | Программирование и базы данных | 4 | 12-01-2006 13:11 | |
public static void main (String args[]){ | ReFleX | Программирование и базы данных | 1 | 19-09-2004 15:34 | |
Класс string в MS Visual C++ 6.0 | studentrsu | Программирование и базы данных | 1 | 22-03-2004 10:20 |
|