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

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

Войти
Регистрация
Восстановить пароль
 
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
#1

Копирование строк - C++

20.08.2013, 09:50. Просмотров 1051. Ответов 6
Метки нет (Все метки)

У Страуструпа приведен такой пример для копирования одной строки в другую:

C++
1
2
3
4
void cpy (char* p, const char* q) 
{ 
    while (*p++=*q++) ; 
}
А дальше написано что

Самый эффективный способ копирования строк с терминальным нулем на
вашей машине должна обеспечивать соответствующая стандартная библиотечная
функция:
C++
1
char* strcpy {char*, const char*);
Неужели стандартная библиотечная функция эффективнее? С трудом в это верится
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.08.2013, 09:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Копирование строк (C++):

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

Копирование строк - C++
Нужно сравнить две строки не учитывая пробелы. Ошибка где-то в копировании a1 в с1 #define _CRT_SECURE_NO_WARNINGS #include...

копирование строк - C++
Как на языке Си скопировать из строки s1 в строку s2 n символов с k-ой позиции?

копирование строк - C++
ребят, не подкажете как скопировать строку из искомой, начиная с символа а и заканчивая символом б? #include "stdafx.h" #include...

Копирование Строк - C++
В общем, я продолжаю разборки с С(++) и у меня снова вопрос, ответ на который ув. тов. Google не дал. Гад! Задача: даны три строки,...

Копирование строк - C++
Всем доброго времени суток. У меня такой вопрос как можно копировать строка в строку не с заменой, а с добавлением в строку. например...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 09:51 #2
Цитата Сообщение от BigLow Посмотреть сообщение
Неужели стандартная библиотечная функция эффективнее? С трудом в это верится
Почему?
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.08.2013, 09:55  [ТС] #3
alsav22, ну а что может быстрее этого?
C++
1
2
3
4
void cpy (char* p, const char* q) 
{ 
    while (*p++=*q++) ; 
}
Здесь ничего лишнего нет, только один проход по строке до символа '\0'.
Не знаю, мне ничего лучшего в голову не приходит
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 10:04 #4
Цитата Сообщение от BigLow Посмотреть сообщение
ну а что может быстрее этого?
Может там так и сделано. Тут специалисты по компиляторам могут что-то сказать (оптимизация кода и пр.).

Добавлено через 2 минуты
Цитата Сообщение от BigLow Посмотреть сообщение
Здесь ничего лишнего нет, только один проход по строке до символа '\0'.
Например, в коде постфиксная инкрементация, а это создание дополнительного временного объекта.
BigLow
55 / 55 / 2
Регистрация: 07.07.2013
Сообщений: 345
20.08.2013, 10:31  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
в коде постфиксная инкрементация, а это создание дополнительного временного объекта.
что-то я не подумал сразу об этом )

Вот эта функция думаю должна быстрее работать
C++
1
2
3
4
5
6
void strCopy(char *p, const char *q)
{
    *p = *q;
 
    while (*++p = *++q) ;
}
никаких временных объектов
Croessmah
Модератор
Эксперт CЭксперт С++
13147 / 7410 / 830
Регистрация: 27.09.2012
Сообщений: 18,244
Записей в блоге: 3
Завершенные тесты: 1
20.08.2013, 10:48 #6
Цитата Сообщение от BigLow Посмотреть сообщение
Вот эта функция думаю должна быстрее работать
Передайте туда пустую строку
alsav22
5417 / 4813 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
20.08.2013, 11:51 #7
Цитата Сообщение от Croessmah Посмотреть сообщение
Передайте туда пустую строку
Если так?
C++
1
2
3
4
void strCopy(char *p, const char *q)
{
    if (*p = *q) while (*++p = *++q);
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.08.2013, 11:51
Привет! Вот еще темы с ответами:

Копирование строк - C++
Добрый вечер. Столкнулся с Проблемой: надо скопировать содержимое "buff" в "hashes.pointname" . Попробовал strcpy - компилируется без...

Копирование строк - C++
И опять столкнулся с проблемой. Описываю функцию, которая копирует k символов из строки str в строку s. Вот мой код: void...

копирование строк - C++
Скопировать из файла F1 в файл F2 все строки, кроме той строки, в которой больше всего гласных букв. Ну или просто скопировать строку...

Копирование строк в объектах - C++
В методе DeleteMessage() я хочу удалить сообщение путём копирования в него строк из следующего сообщения,ну то есть сдвигая всё это,не...


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

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

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