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

Функция изменяющая сразу несколько строк - C++

Восстановить пароль Регистрация
 
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 01:30     Функция изменяющая сразу несколько строк #1
Нужно, чтобы функция редактировала несколько входящих строк.
C++
1
2
3
char str1[10];
char str2[10];
void function1(char*& str1, char*& str2)
Вышеприведённый код кривой, ибо, как гласит гугл,
на входе имеем указатель не на char, поэтому создаётся временная переменная типа char*, присваивается ей значение этого указателя, и передаётся в функцию уже ссылка на неё (адрес этой временной переменной) - именно об этом компилятор и предупреждает. В результате в функции обнуляется именно эта временная переменная, а не тот указатель, который хотел бы обнулить
Как же сделать функцию, которая принимает несколько строк и может свободно их менять? Помогите плз )
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.05.2012, 01:30     Функция изменяющая сразу несколько строк
Посмотрите здесь:

C++ функция возвращает int, возвращаемые значения определены в макросах, как сразу выводить определённые макросы?
Функция, изменяющая входящие параметры C++
Функция PlaySound воспроизводит звук и возвращает управление СРАЗУ ЖЕ (но это неправильно), почему? C++
как удалять несколько символов сразу из строк? C++
C++ записать несколько элементов в вектор сразу, как в массиве
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.05.2012, 01:47     Функция изменяющая сразу несколько строк #2
Смотря что понимается под "менять". Если нужно менять только содержимое str1 и str2, то достаточно этого:
C++
1
void function1(char* str1, char* str2)
Если же нужно динамически выделять/удалять память под эти строки, то статические массивы на вызывающей стороне никак не подходят.
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 02:01  [ТС]     Функция изменяющая сразу несколько строк #3
Тогда получается, что я глупо ошибся, когда тестировал такой вариант... Писать
C++
1
str1="abcd";
оказалось некорректно, чего-то думал что после перехода на указатели мы просто по указателю на 1ый элемент массива можем вот так присваивать данные, казалось логичным.

А есть ли ещё какие-либо более адекватные варианты присваивания строки, кроме поэлементно и strcpy() ? А то поэлементно не вариант, а при strcpy(str1, "abcd"); мне кажется получается так, что сначала создаётся строка в памяти и потом перезаписывается в другой сектор памяти... Как-то не оптимально, что-ли )
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.05.2012, 02:13     Функция изменяющая сразу несколько строк #4
Цитата Сообщение от 33parrots Посмотреть сообщение
а при strcpy(str1, "abcd"); мне кажется получается так, что сначала создаётся строка в памяти и потом перезаписывается в другой сектор памяти... Как-то не оптимально, что-ли )
Строка "abcd" не создаётся, а загружается вместе с самой программой из файла. При запуске. Менять эту строку нельзя. Так что strcpy() это правильный путь. Ещё strdup() можно использовать, если строку надо не просто скопировать, но сперва выделить для неё место (ровно по длине строки).
Но раз уж тут C++, то для современного языка более естественными являются строки std::string.

Добавлено через 4 минуты
Ах, забываю всё время, что strdup это из POSIX. Она не является частью библиотеки Си.
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 02:18  [ТС]     Функция изменяющая сразу несколько строк #5
Grizlik78, а может Вы случайно занимаетесь репетиторством? С радостью взял бы пару часов )
grizlik78
Эксперт C++
 Аватар для grizlik78
1882 / 1414 / 101
Регистрация: 29.05.2011
Сообщений: 2,958
28.05.2012, 02:20     Функция изменяющая сразу несколько строк #6
Не-е-ет! И так не знаю, как заставить себя пойти поработать.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.05.2012, 02:29     Функция изменяющая сразу несколько строк
Еще ссылки по теме:

C++ функция getline считывает несколько строк из файла, игнорируя символ новой строки
C++ Функция, изменяющая число, переданное ей в качестве параметра
C++ Как быстро подключить сразу несколько include

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

Или воспользуйтесь поиском по форуму:
33parrots
3 / 3 / 0
Регистрация: 25.05.2012
Сообщений: 23
28.05.2012, 02:29  [ТС]     Функция изменяющая сразу несколько строк #7
ну, ответ был довольно предсказуем ) Хотя жаль, конечно же. Я был бы толковым учеником, инфа 100%. Да и цену то Вы предлагаете, не я ))
Yandex
Объявления
28.05.2012, 02:29     Функция изменяющая сразу несколько строк
Ответ Создать тему
Опции темы

Текущее время: 08:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru