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

Строка string. Не присваивается новое значение - C++

Восстановить пароль Регистрация
 
agent7991
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 65
31.07.2015, 22:41     Строка string. Не присваивается новое значение #1
Есть строка:
C++
1
string str_in = "A";
Она используется в созданной мной функцией как один из аргументов:
C++
1
fuction(arg1,arg2,str_in,arg4);
Внутри функции значение строки меняется:
C++
1
2
3
4
5
6
7
8
9
char sim;
//string m;
 
string = string + sim;
// так же использовались способы:
// string.push_back(char);
//
// m = sim;
// string.insert(string.length(), m, 1, 1);
В конце концов(при выходе из функции) значение строки становится стоковым (таковым, которое было указано при объявлении переменной), то есть "A".

Суть действий добавить в конец новый символ.

Доп инфо:
Функция в свою очередь типа 'bool' возвращает значение true или false, а значение строки меняется мимолетно.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.07.2015, 22:41     Строка string. Не присваивается новое значение
Посмотрите здесь:

Присвоить новое значение для char C++
Не присваивается значение элементу массива LPWSTR C++
Неправильно присваивается значение массиву C++
строка с ипользыванием string C++
строка string и строка char C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
31.07.2015, 22:44     Строка string. Не присваивается новое значение #2
Ты копию изменяешь, передавай по ссылке (&).
agent7991
0 / 0 / 0
Регистрация: 17.05.2015
Сообщений: 65
31.07.2015, 23:00  [ТС]     Строка string. Не присваивается новое значение #3
nmcf, спасибо, все прекрасно работает.
Не разъясните на счет копий? Я знаю что символ & ссылает на адрес, и мне понятно почему заработало, но как к примеру функция создает копии? Она скрыто объявляет приватные переменные с аналогичным названием и пользуется ими? Начал си недавно, и мне очень кстати узнать побольше тонкостей.
tnk500
113 / 117 / 25
Регистрация: 25.08.2012
Сообщений: 1,215
Завершенные тесты: 3
31.07.2015, 23:05     Строка string. Не присваивается новое значение #4
agent7991, в функцию аргументы передают двумя путями: по значению и по ссылке. Вот пример:
C++
1
2
int take(SomeClass a);  // по значению
int please(SomeClass& a);   // по ссылке
В первом случае создастся копия аргумента, и с копией работа в функции и будет проходить. А если нужно сам аргумент изменить, или избежать накладных расходов памяти, тогда его передают по ссылке.
Kerry_Jr
31.07.2015, 23:11
  #5

Не по теме:

Цитата Сообщение от tnk500 Посмотреть сообщение
двумя путями
можно ещё по указателю передавать

tnk500
31.07.2015, 23:22
  #6

Не по теме:

Kerry_Jr, не так выразился. Я в общем случае имел в виду, что передавать параметры можно либо через копии, либо напрямую

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.07.2015, 23:28     Строка string. Не присваивается новое значение
Еще ссылки по теме:

Почему переменной присваивается произвольное значение("мусор")? C++
C++ Какое одинаковое значение можно вернуть из функций <string> f () и vector < <string> > f()?
Подскажите, почему значению функции присваивается true? Что сделать чтобы передавалось значение? C++

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

Или воспользуйтесь поиском по форуму:
nmcf
4306 / 3727 / 1256
Регистрация: 14.04.2014
Сообщений: 14,599
31.07.2015, 23:28     Строка string. Не присваивается новое значение #7
& - адрес, если к конкретной переменной применить, это другое.
В стеке копия создаётся при вызове, так же как с целочисленным параметром.
Yandex
Объявления
31.07.2015, 23:28     Строка string. Не присваивается новое значение
Ответ Создать тему
Опции темы

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