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

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

Войти
Регистрация
Восстановить пароль
 
TanaTiX
Модератор
2742 / 1587 / 144
Регистрация: 19.02.2011
Сообщений: 5,712
#1

Преобразование строки в строку? - C++

14.05.2013, 22:05. Просмотров 300. Ответов 5
Метки нет (Все метки)

Есть вот такая вот ошибка
1>main.cpp(16): error C2664: Student::setName: невозможно преобразовать параметр 1 из "std::string **" в "std::string"
Ключевые строки кода:
C++
1
2
3
4
Student *arr = new Student[count];
string *value = new string;
cin >> *value;
arr[i].setName(&value);
И класс студента:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <string>
using namespace std;
class Student{
    public:
        void setName(string value){
            _name=value;
        }
        void setLastName(string value){
            _lastName=value;
        }
        string name(){
            return _name;
        }
        string lastName(){
            return _lastName;
        }
    private:
        string _name;
        string _lastName;
};
Почему возникает ошибка и как ее исправить? Правильно ли использовать в данном случае динамические переменные, почему? Заранее спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.05.2013, 22:05     Преобразование строки в строку?
Посмотрите здесь:

Преобразование строки в массив, массива в строку - C++
Здраствуйте, не могу сообразить как правильно выполнить задание: &quot;Создать два класса: строка и массив. При преобразовании строки в массив...

Преобразование цифр в строку - C++
Всем привет! Пишу небольшую программку, а именно просто идущие часы(такие же что тикают в нижнем правом углу) Так вот хочу выводить...

Преобразование число в строку - C++
Привет ребята, хочу спросить как с помощь printf число можно переобразовать в строку? Например через itoa это можно сделать вот так: ...

Преобразование числа в строку - C++
Подскажите как преобразовать число в строку, пожалуйста!

Преобразование числа в строку!!!! - C++
Как в VS преобразовать число в строку!!! Через itoa что-то не выходит!!!

Преобразование числа в строку - C++
Всем доброго времени суток, помогите пожалуйста получить из числа 12345679 (int), строку string = {1, 2, 3, 4, 5, 6, 7, 8, 9}. т.е....

Преобразование числа в строку - C++
Как преобразовать строку char *s, в которой записано число(возможно со знаком минус), в формат типа long 1) в строке десятичное число ...

преобразование из double в строку - C++
Здравствуйте, в общем такое дело, есть winapi приложение с подключаемой .dll, при подсчёте функция должна вывести в эдит дробный...

Преобразование объекта в строку - C++
Есть некий класс Object. Как сделать так, чтобы он был полностью совместим со string? Чтобы можно было делать например вот так: ...

Преобразование ipv6 в бинарную строку - C++
IPv6 адрес это 128-битный адрес. Он разделяется на части по 16 бит, которые преобразуются в 4-значные шестнадцатеричные числа и разделяются...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.05.2013, 22:16     Преобразование строки в строку? #2
Цитата Сообщение от TanaTiX Посмотреть сообщение
Правильно ли использовать в данном случае динамические переменные
неправильно
Цитата Сообщение от TanaTiX Посмотреть сообщение
почему?
потому что внутри std::string уже использует динамическое выделение памяти для самой строки, создавать std::string динамически - только себе проблемы создавать ибо надо следить за его удалением

Добавлено через 54 секунды
Цитата Сообщение от TanaTiX Посмотреть сообщение
Почему возникает ошибка и как ее исправить?
C++
1
2
3
4
Student *arr = new Student[count];
string value;
cin >> value;
arr[i].setName(value);
Добавлено через 2 минуты
ну и сейчас у вас строка передается по значению т.е. копируется 2 раза
Цитата Сообщение от TanaTiX Посмотреть сообщение
C++
1
2
3
4
5
6
void setName(string value){
* * * * * * _name=value;
* * * * }
* * * * void setLastName(string value){
* * * * * * _lastName=value;
* * * * }
дабы из,ежать лишнего копирования лучше передавать по ссылке на константу
C++
1
2
3
4
5
6
void setName(const string& value){
 _name=value;
}
void setLastName(const string& value){
 _lastName=value;
}
TanaTiX
Модератор
2742 / 1587 / 144
Регистрация: 19.02.2011
Сообщений: 5,712
14.05.2013, 22:17  [ТС]     Преобразование строки в строку? #3
Jupiter, я исходил из желания максимально очищать память по окончании работы программы. Переменная value в ней необходима только на определенном этапе и далее бесполезна. Вопрос чисто академический, данный код - лишь пример. Как тогда удалить переменную из памяти?

Upd. кажется пока писал, сообщение обновилось, пойду курить мануалы, еще раз спасибо.
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.05.2013, 22:29     Преобразование строки в строку? #4
TanaTiX, если требуется осободить память которую занимает строка то
C++
1
std::string().swap(value);
после этого значение value будет уничтожено и value будет empty строкой.
Либо можно создать value в локальной области видимости:
C++
1
2
3
4
5
6
{
    {
         std::string value;
    } //value уничтожается и вне блока уже недоступна
 
}
TanaTiX
Модератор
2742 / 1587 / 144
Регистрация: 19.02.2011
Сообщений: 5,712
14.05.2013, 22:33  [ТС]     Преобразование строки в строку? #5
Jupiter, т.е. переменная созданная внутри метода удаляется по окончании работы метода? Или при условии отсутствия ссылок на переменную в других частях программы (сравниваю со флешом)? И тогда получается, что создание динамических переменных актуально как поле класса, а не как локальная/статическая переменная?
Jupiter
Каратель
Эксперт С++
6552 / 3972 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
14.05.2013, 22:40     Преобразование строки в строку? #6
Цитата Сообщение от TanaTiX Посмотреть сообщение
т.е. переменная созданная внутри метода удаляется по окончании работы метода?
если переменная создана на стеке т.е. вот так:
C++
1
2
3
{
    std::string str;
}
то да, удаляется по выходу из блока фигурных скобок
Yandex
Объявления
14.05.2013, 22:40     Преобразование строки в строку?
Ответ Создать тему
Опции темы

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