С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

20.10.2016, 16:42. Просмотров 595. Ответов 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
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, быть может не напрямую но хоть как нибудь, очень надо!!!

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

Не по теме:

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

1
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;
}
Падает
0
nmcf
5688 / 4999 / 1706
Регистрация: 14.04.2014
Сообщений: 20,408
20.10.2016, 17:15 #6
Память ещё и освободить нужно.
1
dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:19  [ТС] #7
Цитата Сообщение от nmcf Посмотреть сообщение
Память ещё и освободить нужно.
Это не относится к падению, т.к. именно на этой строке падает
0
nmcf
5688 / 4999 / 1706
Регистрация: 14.04.2014
Сообщений: 20,408
20.10.2016, 17:23 #8
На какой?
1
GbaLog-
Любитель чаепитий
3074 / 1413 / 341
Регистрация: 24.08.2014
Сообщений: 5,016
Записей в блоге: 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)
1
gru74ik
Эксперт CЭксперт С++
4207 / 1853 / 198
Регистрация: 20.02.2013
Сообщений: 4,992
Записей в блоге: 22
20.10.2016, 17:25 #10
dreamn, чего пишет-то? Скрин ошибки в студию. Поди C++14 не подключил, а туда же - "падает".
1
nmcf
5688 / 4999 / 1706
Регистрация: 14.04.2014
Сообщений: 20,408
20.10.2016, 17:27 #11
Убери эти скобки
C++
1
std::string* str = new std::string;
1
GbaLog-
Любитель чаепитий
3074 / 1413 / 341
Регистрация: 24.08.2014
Сообщений: 5,016
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 17:29 #12
Хотя нет, два раза последнюю строку выводит, ну тут дело в while цикле, я думаю.
1
dreamn
0 / 0 / 0
Регистрация: 25.09.2016
Сообщений: 27
20.10.2016, 17:52  [ТС] #13
Сейчас скрины загружу

Добавлено через 19 минут
Не могу скриншот отправить, напишу текстом.
Когда запускаю код, программа работает ровно до момента считывания (ставил cout'ы), никакого сообщения текстового об ошибки нет за исключением сообщения среды
C++
1
ВЫПОЛНЕНИЕ FAILED (значение выхода 139,, общее время: 2s)
Напомню, что это я описываю метод в классе, и записать необходимо в динамическое поле объекта типа string*
0
GbaLog-
Любитель чаепитий
3074 / 1413 / 341
Регистрация: 24.08.2014
Сообщений: 5,016
Записей в блоге: 1
Завершенные тесты: 2
20.10.2016, 18:24 #14
Цитата Сообщение от dreamn Посмотреть сообщение
Напомню, что это я описываю метод в классе, и записать необходимо в динамическое поле объекта типа string*
Может класс покажите?
0
nd2
2413 / 2002 / 704
Регистрация: 29.01.2016
Сообщений: 6,537
20.10.2016, 19:53 #15
Цитата Сообщение от GbaLog- Посмотреть сообщение
Хотя нет, два раза последнюю строку выводит, ну тут дело в while цикле, я думаю.
C++
1
2
3
4
    while( std::getline( f_in, *str ) )
    {
         std::cout << *str << std::endl;
    }
0
20.10.2016, 19:53
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 то есть существует ли функция которая переделает...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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