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

Как вернуть переменную типа char * из функции - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.80
GarrisonD
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 22
07.02.2013, 09:37     Как вернуть переменную типа char * из функции #1
Как вернуть переменную типа char * из функции в которую передаю string??? Вот моя функция:

C++
1
2
3
4
char * function ( string line )
{
    return ( char * ) line.c_str ();
}
Но она возвращает всякую аброкадабру... Что делать? Помогите...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.02.2013, 09:37     Как вернуть переменную типа char * из функции
Посмотрите здесь:

Как сделать переменную типа char именем файла C++
C++ Как сравнить переменную типа char
C++ Не могу обнулить переменную типа char
C++ Очистить переменную типа char *
Сложение массива типа char в одну переменную C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
07.02.2013, 09:54     Как вернуть переменную типа char * из функции #2
Ну похоже при уничтожении объекта line память освобождается и указатель указывает непонятно куда.

А вообще выглядит как желание выстрелить себе в ногу. Какая задача? Наверняка можно решить более прямым путем.
avfed
14 / 12 / 2
Регистрация: 24.01.2013
Сообщений: 23
07.02.2013, 10:08     Как вернуть переменную типа char * из функции #3
как вариант можно дать адрес как входной параметр
C++
1
void function ( string line, char * out )
и уже внутри функции пишешь в out то, что хотел вернуть
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2013, 11:05     Как вернуть переменную типа char * из функции #4
Цитата Сообщение от GarrisonD Посмотреть сообщение
return ( char * ) line.c_str ();
line.c_str - вернёт ТОЛЬКО
const char *
Такое преобразование
(char *) line.c_str ()
НЕВОЗМОЖНО!
Если просто и не заморачиваясь на утечки памяти то можно сделать так
C++
1
2
3
4
5
char * function ( string line )
{
    char * str = new char[1 + line.length()];
    return strcpy(str, line.c_str ());
}
-=ЮрА=-
Заблокирован
Автор FAQ
07.02.2013, 11:13     Как вернуть переменную типа char * из функции #5
Ниже наглядный пример
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
#include <iostream>
using namespace std;
 
char * function ( string line )
{
    char * str = new char[1 + line.length()];
    return strcpy(str, line.c_str ());
}
 
int main()
{
    string line = "blablabla";
    char * text = function ( line );
    cout<<text + 3<<endl;
    return 0;
}
Проверка здесь http://codepad.org/soCNkAu0
Миниатюры
Как вернуть переменную типа char * из функции  
GarrisonD
0 / 0 / 0
Регистрация: 06.07.2012
Сообщений: 22
07.02.2013, 18:13  [ТС]     Как вернуть переменную типа char * из функции #6
Спасибо, -=ЮрА=-, помогли) Очень всем благодарен)
silent_1991
11.02.2013, 14:17     Как вернуть переменную типа char * из функции
  #7

Не по теме:

Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
НЕВОЗМОЖНО!
Оно возможно (ибо это преобразование в стиле С), но то, что так делать крайне нежелательно - чистая правда.

Yandex
Объявления
11.02.2013, 14:17     Как вернуть переменную типа char * из функции
Ответ Создать тему
Опции темы

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