Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27

Преобразование string* в string

20.10.2016, 16:42. Показов 2654. Ответов 40
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, друзья.
У меня есть класс. В нем описано поле
C++
1
string *GPS;
В конструкторе выделяю память. Передаю именно *_GPS для использования метода инициализации.
C++
1
2
3
Class::Class (string *_GPS) {
GPS = new string;
}
Мне необходимо сначала считать строку GPS из файла. Но как без проблем ее считать не удалось найти, поэтому решил обходом сделать
C++
1
2
3
4
5
6
char *buf = new char [100];
fstream ip ("data/ip.txt", ios::in);
ip.getline(buf, 100);
ip.close();
string TEMP_GPS (buf, strlen(buf));
*GPS = TEMP_GPS;
И последняя строка у меня не работает. Код компилируется, но падает на этой строчке.

Подскажите, пожалуйста, как мне лучше считать в ДИНАМИЧЕСКУЮ string* строку объекта С ПРОБЕЛАМИ?
Может какой-нибудь другой способ есть, а он 100% есть?
Заранее спасибо)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.10.2016, 16:42
Ответы с готовыми решениями:

Запрошено преобразование от ‘const std::string*’ к нескалярному типу ‘std::string’
private: std::string firstName; }; std::string ClientData::getFirstName() const{ return firstName; } Дает в итоге...

Доступ к паре в map<string, vector<pair<string, string>>>Temp
Подскажите пожалуйста как получить данные в векторе пар ? void showData(const map&lt;string, vector&lt;pair&lt;string,...

Преобразование string в double
У меня есть массив типа string, в котором хранятся нецелые числа. Надо отсортировать массив по убыванию, но для этого надо преобразовать...

40
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
20.10.2016, 16:55
Цитата Сообщение от dreamn Посмотреть сообщение
Подскажите, пожалуйста, как мне лучше считать в ДИНАМИЧЕСКУЮ string* строку объекта С ПРОБЕЛАМИ?
C++
1
2
3
4
5
6
7
8
9
10
11
12
/////////////////////////////////////////////////////////////////////
// 
/////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
/////////////////////////////////////////////////////////////////////
int main()
{
    std::string* str = new std::string{};
    std::getline( std::cin, *str );
    std::cout << *str << std::endl;
}
1
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:02  [ТС]
Цитата Сообщение от dreamn Посмотреть сообщение
Мне необходимо сначала считать строку GPS из файла.
Соответственно, вопрос
Цитата Сообщение от dreamn Посмотреть сообщение
Подскажите, пожалуйста, как мне лучше считать в ДИНАМИЧЕСКУЮ string* строку объекта С ПРОБЕЛАМИ?
Также из файла
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
20.10.2016, 17:03
Цитата Сообщение от dreamn Посмотреть сообщение
Также из файла
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/////////////////////////////////////////////////////////////////////
// 
/////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <fstream>
/////////////////////////////////////////////////////////////////////
int main()
{
    std::string* str = new std::string{};
    std::ifstream f_in( "file.txt" );
    std::getline( f_in, *str );
    std::cout << *str << std::endl;
}

Не по теме:

Зачем только строку в динамической памяти создавать? :-|

1
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:11  [ТС]
Цитата Сообщение от GbaLog- Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/////////////////////////////////////////////////////////////////////
// 
/////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <fstream>
/////////////////////////////////////////////////////////////////////
int main()
{
 std::string* str = new std::string{};
 std::ifstream f_in( "file.txt" );
 std::getline( f_in, *str );
 std::cout << *str << std::endl;
}
Падает
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.10.2016, 17:15
Память ещё и освободить нужно.
1
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:19  [ТС]
Цитата Сообщение от nmcf Посмотреть сообщение
Память ещё и освободить нужно.
Это не относится к падению, т.к. именно на этой строке падает
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.10.2016, 17:23
На какой?
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
20.10.2016, 17:24
Цитата Сообщение от dreamn Посмотреть сообщение
Падает
Не знаю, что у Вас там падает, у меня всё нормально:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/////////////////////////////////////////////////////////////////////
// 
/////////////////////////////////////////////////////////////////////
#include <iostream>
#include <string>
#include <fstream>
/////////////////////////////////////////////////////////////////////
int main()
{
    std::string* str = new std::string{};
    std::ifstream f_in( "file.txt" );
    while( f_in )
    {
        std::getline( f_in, *str );
        std::cout << *str << std::endl;
    }
}
file.txt
Code
1
2
3
4
5
qweq
qwe
 
wqjelq
sadqwlkasd
result
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
g++ -Wall -std=c++14 new1.cpp -o new1.exe
g++ -Wall -std=c++14 new1.cpp -o new1.exe
Process started >>>
<<< Process finished. (Exit code 0)
================ READY ================
new1.exe
new1.exe
Process started >>>
qweq
qwe
 
wqjelq
sadqwlkasd
sadqwlkasd
<<< Process finished. (Exit code 0)
1
Модератор
Эксперт CЭксперт С++
 Аватар для sourcerer
5288 / 2376 / 342
Регистрация: 20.02.2013
Сообщений: 5,773
Записей в блоге: 20
20.10.2016, 17:25
dreamn, чего пишет-то? Скрин ошибки в студию. Поди C++14 не подключил, а туда же - "падает".
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
20.10.2016, 17:27
Убери эти скобки
C++
1
std::string* str = new std::string;
1
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
20.10.2016, 17:29
Хотя нет, два раза последнюю строку выводит, ну тут дело в while цикле, я думаю.
1
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:52  [ТС]
Сейчас скрины загружу

Добавлено через 19 минут
Не могу скриншот отправить, напишу текстом.
Когда запускаю код, программа работает ровно до момента считывания (ставил cout'ы), никакого сообщения текстового об ошибки нет за исключением сообщения среды
C++
1
ВЫПОЛНЕНИЕ FAILED (значение выхода 139,, общее время: 2s)
Напомню, что это я описываю метод в классе, и записать необходимо в динамическое поле объекта типа string*
0
Любитель чаепитий
 Аватар для GbaLog-
3745 / 1801 / 566
Регистрация: 24.08.2014
Сообщений: 6,020
Записей в блоге: 1
20.10.2016, 18:24
Цитата Сообщение от dreamn Посмотреть сообщение
Напомню, что это я описываю метод в классе, и записать необходимо в динамическое поле объекта типа string*
Может класс покажите?
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
20.10.2016, 19:53
Цитата Сообщение от GbaLog- Посмотреть сообщение
Хотя нет, два раза последнюю строку выводит, ну тут дело в while цикле, я думаю.
C++
1
2
3
4
    while( std::getline( f_in, *str ) )
    {
         std::cout << *str << std::endl;
    }
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
20.10.2016, 19:56
Цитата Сообщение от dreamn Посмотреть сообщение
необходимо сначала считать строку GPS из файла. Но как без проблем ее считать

C++
1
2
3
std::string line;
fstream ip ("data/ip.txt", ios::in);
io >> line;
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
20.10.2016, 20:20
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Class
{
    string* GPS;
public:
    Class()
    { GPS = new string; }
    
    ~Class()
    { delete GPS; }
    
    void read()
    {
        ifstream fin ("file.txt");
        if (fin)
        {
            getline(fin, *GPS);
            fin.close();
        }
    }
    
    const string* get() const
    { return GPS;}
 
};
 
int main()
{
    
    Class obj;
    obj.read();
    cout << *(obj.get()) << endl;
 
    system("pause");
    return 0;
}
Миниатюры
Преобразование string* в string  
0
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
21.10.2016, 11:44  [ТС]
Класс
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class phoneClass {
private:
    float   *thickness,      //Толщина
            *width,          //Ширина
            *length,         //Длина
            *weight;         //Вес
    string  *model,          //Модель
            *mark;           //Марка
    string  *GPS;            //Местонахождение
    bool err;                //Индентификатор ошибки 
    bool Init (float, float, float, float, string*, string*, string*);
    
public:
    bool iF = false, iS = false, iB = false, iG = false, iCon = false, iCall = false, iSms = false;
    
    phoneClass();
    phoneClass(float, float, float, float, string*, string*, string*, bool&);
    void actScreenshot();        //Скриншот
    void actFlashligth();        //Фонарик
    void actBrowser();           //Браузкер
    void actGPS();               //GPS
    int actContacts();          //Контакты
    int actCall();              //Звонок
    int actSms();               //Смс
    virtual ~phoneClass();
    void setMark(string* mark);
    string* getMark() const;
    void setModel(string* model);
    string* getModel() const;
    void setWeight(float* weight);
    float* getWeight() const;
    void setLength(float* length);
    float* getLength() const;
    void setWidth(float* width);
    float* getWidth() const;
    void setThickness(float* thickness);
    float* getThickness() const;
};
Конструктор
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
phoneClass::phoneClass(float _thickness, float _width, float _length, float _weight, string* _model, string* _mark, string* _GPS, bool &err) {
    cout << "phoneClass::phoneClass(float _thickness, float _width, float _length, float _weight, string* _model, string* _mark, bool &err)" << endl;
 
    thickness = new float;
    width = new float;
    length = new float;
    weight = new float;
    model = new string;
    mark = new string;
    GPS = new string;
 
    if (!Init(_thickness, _width, _length, _weight, _model, _mark, _GPS)) {
        cout << "Error in phoneClass::phoneClass(float* _thickness, float* _width, float* _length, float* _weight, string* _model, string* _mark)" << endl;
        delete this;
        err = false;
    }
    else err = true;
}
Инициализация
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool phoneClass::Init(float _thickness, float _width, float _length, float _weight, string* _model, string* _mark, string* _GPS) {
    cout << "bool phoneClass::Init(float* _thickness, float* _width, float* _length, float* _weight, string* _model, string* _mark)" << endl;
    if ((_thickness>0)&&(_width>0)&&(_length>0)&&(_weight>0)&&(!_model->empty())&&(!_mark->empty())) {
        *thickness = _thickness;
        *width = _width;
        *length = _length;
        *weight = _weight;
        model = _model;
        mark = _mark;
        GPS = _GPS;
 
        return true;
    }
    else {
        cout << "Error bool phoneClass::Init(float* _thickness, float* _width, float* _length, float* _weight, string* _model, string* _mark)" << endl;
        return false;
    }
}
Метод actGPS
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
void phoneClass::actGPS() {
    cout << "void phoneClass::actGPS()" << endl;
    char *buf = new char [100];
    
    if (iG == false) {
        cout << "iG = FALSE" << endl;
        ifstream f_in( "data/ip.txt" );
        cout << "FILE OPENED" << endl;
        getline( f_in, *GPS );
        cout << "READ STR" << endl;
        /*fstream ip ("data/ip.txt", ios::in);
        
        ip.getline(buf, 100);
        
        cout << "BUF = " << buf << endl;
        ip.close();
        string TEMP_GPS (buf, strlen(buf));
        cout << "TEMP_GPS = " << TEMP_GPS << endl;
        *GPS = TEMP_GPS;
        cout << "GPS = " << *GPS << endl;
        cout << "FILE CLOSED" << endl;*/
        iG = true;
        cout << "iG = TRUE" << endl;
    }
    else {
        cout << "iG = TRUE" << endl;
        *GPS = "Unknown";
        cout << "GPS = UNKNOWN" << endl;
        iG = false;
        cout << "iG = FALSE" << endl;
    }
}
Добавлено через 1 минуту
Цитата Сообщение от nd2 Посмотреть сообщение
C++
Скинул свой код.
По сути точно также описано все, но падает на строчке чтения

Добавлено через 59 секунд
Цитата Сообщение от hoggy Посмотреть сообщение
C++
1
2
3
std::string line;
fstream ip ("data/ip.txt", ios::in);
io >> line;
Необходимо динамический string
0
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
21.10.2016, 11:50
Цитата Сообщение от dreamn Посмотреть сообщение
Необходимо динамический string : string *
перепутал с char* ?
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
21.10.2016, 11:56
Цитата Сообщение от dreamn Посмотреть сообщение
delete this;
по рукам еще не били?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.10.2016, 11:56
Помогаю со студенческими работами здесь

Преобразование шаблона к string
Доброго времени суток. Возник такой вопрос. Пусть есть три переменные: int a = 1; std::string s = &quot;mama&quot;; myClass...

Преобразование double в string
Нужно преобразовать double в строку. Знаю про функции ostringstream и stod(), но их проблема в том, что они округляют значения. Допустим,...

Преобразование string в int
Добрый день. Есть переменная типа string, в которой записана цифра. Как мою строку перевести к int?

Преобразование из string в double
Объясните пожалуйста в чем связь между преобразованием данный из string в double и библиотекой русского языка Вот так работает #include...

Преобразование Double в string
Допустим у меня есть число double n = 0.0000000000 мне нужно преобразовать его в строку string s = 0.0000000000. Как это сделать?


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru