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

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

Войти
Регистрация
Восстановить пароль
 
 
dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
#1

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

20.10.2016, 16:42. Просмотров 542. Ответов 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% есть?
Заранее спасибо)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.10.2016, 16:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование string* в string (C++):

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

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

Преобразование string в char* - C++
int fun(char*); int main() { int a; string strok; strok=&quot;abc&quot;; strok+=&quot;cde&quot;; ...

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

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

Преобразование string в int - C++
Помогите пожалуйста с преобразованием string к типу int, быть может не напрямую но хоть как нибудь, очень надо!!!

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
GbaLog-
Любитель чаепитий
2711 / 1244 / 301
Регистрация: 24.08.2014
Сообщений: 4,451
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 16:55 #2
Цитата Сообщение от 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;
}
dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:02  [ТС] #3
Цитата Сообщение от dreamn Посмотреть сообщение
Мне необходимо сначала считать строку GPS из файла.
Соответственно, вопрос
Цитата Сообщение от dreamn Посмотреть сообщение
Подскажите, пожалуйста, как мне лучше считать в ДИНАМИЧЕСКУЮ string* строку объекта С ПРОБЕЛАМИ?
Также из файла
GbaLog-
Любитель чаепитий
2711 / 1244 / 301
Регистрация: 24.08.2014
Сообщений: 4,451
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 17:03 #4
Цитата Сообщение от 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;
}

Не по теме:

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

dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:11  [ТС] #5
Цитата Сообщение от 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;
}
Падает
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
20.10.2016, 17:15 #6
Память ещё и освободить нужно.
dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:19  [ТС] #7
Цитата Сообщение от nmcf Посмотреть сообщение
Память ещё и освободить нужно.
Это не относится к падению, т.к. именно на этой строке падает
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
20.10.2016, 17:23 #8
На какой?
GbaLog-
Любитель чаепитий
2711 / 1244 / 301
Регистрация: 24.08.2014
Сообщений: 4,451
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 17:24 #9
Цитата Сообщение от 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
Код
qweq
qwe

wqjelq
sadqwlkasd
result
Код
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)
gru74ik
Модератор
Эксперт CЭксперт С++
4154 / 1780 / 197
Регистрация: 20.02.2013
Сообщений: 4,901
Записей в блоге: 21
20.10.2016, 17:25 #10
dreamn, чего пишет-то? Скрин ошибки в студию. Поди C++14 не подключил, а туда же - "падает".
nmcf
5310 / 4630 / 1550
Регистрация: 14.04.2014
Сообщений: 18,437
20.10.2016, 17:27 #11
Убери эти скобки
C++
1
std::string* str = new std::string;
GbaLog-
Любитель чаепитий
2711 / 1244 / 301
Регистрация: 24.08.2014
Сообщений: 4,451
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 17:29 #12
Хотя нет, два раза последнюю строку выводит, ну тут дело в while цикле, я думаю.
dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:52  [ТС] #13
Сейчас скрины загружу

Добавлено через 19 минут
Не могу скриншот отправить, напишу текстом.
Когда запускаю код, программа работает ровно до момента считывания (ставил cout'ы), никакого сообщения текстового об ошибки нет за исключением сообщения среды
C++
1
ВЫПОЛНЕНИЕ FAILED (значение выхода 139,, общее время: 2s)
Напомню, что это я описываю метод в классе, и записать необходимо в динамическое поле объекта типа string*
GbaLog-
Любитель чаепитий
2711 / 1244 / 301
Регистрация: 24.08.2014
Сообщений: 4,451
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 18:24 #14
Цитата Сообщение от dreamn Посмотреть сообщение
Напомню, что это я описываю метод в классе, и записать необходимо в динамическое поле объекта типа string*
Может класс покажите?
nd2
2212 / 1784 / 622
Регистрация: 29.01.2016
Сообщений: 5,727
20.10.2016, 19:53 #15
Цитата Сообщение от GbaLog- Посмотреть сообщение
Хотя нет, два раза последнюю строку выводит, ну тут дело в while цикле, я думаю.
C++
1
2
3
4
    while( std::getline( f_in, *str ) )
    {
         std::cout << *str << std::endl;
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2016, 19:53
Привет! Вот еще темы с ответами:

Преобразование из string в double - C++
Вот простой пример демонстрирующий данную проблему: Так работает: #include &lt;iostream&gt; #include &lt;cstdlib&gt; int main() { ...

Преобразование string в int - C++
Всем привет, нужно преобразовать string в int #include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt;...

Преобразование char* в string - C++
Доброго времени суток. Если я динамически выделил память для массива типа char, то как его можно преобразовать в string?

Преобразование string в char* - C++
функция c_str переделывает стринг строку в const char* , а мне надо чтобы было без const то есть существует ли функция которая переделает...


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

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

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