Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> char *, как соединить? 
V
    Опции темы
kirjanov
Дата 31.1.2006, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 22.1.2006
Где: Dark wood of erro r

Репутация: 1
Всего: 15



лучше использовать strncat() или snprintf() ;)
PM MAIL   Вверх
Romikgy
Дата 31.1.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 8
Всего: 146



Не знаю как
Цитата(kirjanov @ 31.1.2006, 11:26 Найти цитируемый пост)

лучше

кому чем удобнее smile
ЗЫ А вооще то , имхо, в реализации класса string суммирование так и сделанно через
Цитата(kirjanov @ 31.1.2006, 11:26 Найти цитируемый пост)

strcat()

smile


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Mayk
Дата 31.1.2006, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Romikgy @ 31.1.2006, 16:35 Найти цитируемый пост)

ЗЫ А вооще то , имхо, в реализации класса string суммирование так и сделанно через

Скорее нет, чем да по нескольким причинам.
1) Вообще говоря не существует шаблонной ф-ции str[n]cat. А basic_string<char> - это всё же шаблонный класс. wcscat это конечно очень хорошо, но будут ли разработчики заморачиваться на этот счёт?

2) Длина строки скорее известна заранее(она shouldвычислятся за константное время (в SUS3 по поводу should сказано

Цитата(SUS3)

should
....that is recommended but not mandatory....
, станадарт C++ слово "should" вроде не определяет)

В случае константного size() использовать strcat крайне не разумно (strcat(str,append) по своей сути это в точности strcpy(str+strlen(str),append);, а линейный strlen() нам не нужен - мы можем узнать его значение за константное время).




А вот это реализация из гнуса:
Код

//basic_string.h
     static void
      _M_copy(_CharT* __d, const _CharT* __s, size_type __n)
      {
        if (__n == 1)
          traits_type::assign(*__d, *__s);
        else
          traits_type::copy(__d, __s, __n);
      }
//basic_string.tcc
  template<typename _CharT, typename _Traits, typename _Alloc>
    basic_string<_CharT, _Traits, _Alloc>&
    basic_string<_CharT, _Traits, _Alloc>::
    append(const _CharT* __s, size_type __n)
    {
      __glibcxx_requires_string_len(__s, __n);
      if (__n)
        {
          _M_check_length(size_type(0), __n, "basic_string::append");
          const size_type __len = __n + this->size();
          if (__len > this->capacity() || _M_rep()->_M_is_shared())
            {
              if (_M_disjunct(__s))
                this->reserve(__len);
              else
                {
                  const size_type __off = __s - _M_data();
                  this->reserve(__len);
                  __s = _M_data() + __off;
                }
            }
          _M_copy(_M_data() + this->size(), __s, __n);
          _M_rep()->_M_set_length_and_sharable(__len);
        }
      return *this;
    }




--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0435 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.