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

класс strtype. перегрузка присваивания и сложения - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Аналог функции system("pause"); http://www.cyberforum.ru/cpp-beginners/thread777577.html
Использую функцию system("pause"); для отображения консоли в конце программы, подскажите пожалуйста что нибудь кроссплатформенно и по возможности относящееся к языку С++ (а не С) пробовал getchar();, но там мне не нравиться что приходиться нажимать Enter в конце программы, а не нажмите любую кнопку !
C++ Foo::foo(): x(dx), y(dy) {}; Зачем Очень часто видел конструктор типа Foo::foo(): x(dx), y(dy) {}; Сам использовал только в инициализации структур. Какие отличия от стандартного Foo:foo(int dx, int dy) { x = dx; y = dy; } Что предпочтительнее, какие преимущества у конструкции первого типа? http://www.cyberforum.ru/cpp-beginners/thread777558.html
C++ Как заменить dooble, bool и тд
Как изменить типы переменных только на int и float ? #include <iostream> #include <fstream> #include <iomanip> #include <cmath> #include <malloc.h> using namespace std;
C++ IDE с "подсказчиком кода"
не подскажете, где можно скачать? требования такие- - чтобы была бесплатна(бесплатна - это значит бесплатна, а не с кряком :D); - чтобы был "подсказчик кода" - когда пишешь в редакторе, то чтобы выводил функции, переменные подключенных библиотек и тд.; - чтобы немного кушала ресурсов; Microsoft Visual Studio поэтому и не подходит - много кушает памяти.
C++ Что означает if(!p) ? http://www.cyberforum.ru/cpp-beginners/thread777534.html
То есть вот этот восклицательный знак перед переменной. Я использовал только записи вроде if(p!=0) например итд
C++ робота с каталогами Windows Здравствуйте. Я новичок в этой теме, но очень интересует вопрос: Как можно при помочи С++ "добраться" до какой-то определенной директории на жестком диске и посмотреть (вывести в консоль ее содержимое), а потом удалить эти файлы и саму папку? Пошарил по просторах интернета - результат не очень. Очень много информации, но так как я еще никогда с етим не сталкивался - не могу въехать с чего я... подробнее

Показать сообщение отдельно
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
03.02.2013, 15:38     класс strtype. перегрузка присваивания и сложения
Цитата Сообщение от Dummy_1 Посмотреть сообщение
p=new char[c.len];
len - длинна строки? Тогда
C++
1
p = new char[c.len + 1];
иначе завершающий '\0' некуда будет писать.
Цитата Сообщение от Dummy_1 Посмотреть сообщение
strcpy(c, p);
C++
1
strcpy(p, c.p);
Цитата Сообщение от Dummy_1 Посмотреть сообщение
C++
1
2
3
4
5
6
7
strtype(char *c){
   len=strlen(c);
   p = new char[len];
   if (!p) {
      cout<<"Memory allocation error!!!"; exit(1);
   }
    strcpy(c, p); }
C++
1
2
3
4
5
strtype(char const* c) : len(strlen(c)) {
   p = new char[len + 1];
   if (!p) { //... }
   strcpy(p, c);
}
Добавлено через 9 минут
Цитата Сообщение от Dummy_1 Посмотреть сообщение
C++
1
2
3
4
5
6
strtype operator+ (strtype s1, strtype s2){
   strtype tmp(" ");
   tmp.len=s1.len+s2.len;
   tmp.p=s1.p+s1.p;
   return tmp;
}
Как-нибудь уж так хотя бы, хотя тоже криво:
C++
1
2
3
4
5
6
7
8
9
strtype operator +(strtype const& s1, strtype const& s2) {
   strtype result("");
   delete[] result.p;
   int length = s1.len + s2.len;
   result.len = length;
   result.p = new char[length + 1];
   strcpy(strcpy(p, s1.p), s2.p);
   return result;
}
Добавлено через 27 минут
Да, кстати не сразу заметил: оператор new/new[], в отличии от malloc/calloc/realloc, при неудачном выделении не возвращает ноль, а выбрасывает исключение std::bad_alloc, так что если охота проверить, то надо ловить это исключение:
C++
1
2
3
try {
   p = new char[len + 1];
} catch (std::bad_alloc const& error) { /* ... */ }
или использовать nothrow new[]:
C++
1
2
p = new (std::nothrow) char[len + 1];
if (!p) { /* ... */ }
 
Текущее время: 12:19. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru