Funkcja zwraca "wskaźnik"


(fedora24x) #1

Witam, mam funkcje zwracającą ciąg znaków, jak ma je zwracać?

 

char *read() ?????

[co_tu_ma_być] read()

{

            //pobieranie tekstu do wskaźnika

           

 

            return *wskażnik;

}

 

char[] tekst = read();

cout << tekst;

 

???


(Yuri20) #2

Zwracać ciąg znaków możesz normalnie przez return, np:

return "taki sobie ciag";

lub

char* a = "haha";
return a;

Czyli kompletny przykład może być taki:

#include <iostream>
const char * napis();
int main()
{
    const char* napisik = napis();
    std::cout << napis() << std::endl;
    std::cout << napisik << std::endl;
}
const char * napis(){
    char* a = "napis sobie taki";
    return a;
}

Przed char* daje się const, ponieważ literałów (stałych) napisowych się nie modyfikuje. Na przyszłość - kod formatuj w jakimś środowisku programistycznym, potem wklejaj na forum, a potem zawieraj je w odpowiednich znacznikach, a ewentualne pytajniki zamieszczaj w komentarzach.


(fedora24x) #3
const char * napis(){
    char* a = "napis sobie taki";
    return a;
}

Wykorzystam to, dzięki


(Yuri20) #4

Nie byłoby błedem gdybyś tego consta tam nie dał, ale funkcje zwracające napis bez consta są zdeprecjonowane. Napisów się nie zmienia i traktuje się je jako stałe, wiec i wskaźnik powinien być zwracany na stałą, stąd jest const.


(enedil) #5

Ja i tak bym użył stringa, a nie C-stringa. Jedyny przypadek w którym używam tego drugiego, to stare funkcje biblioteczne, które wymagają C-stringa jako argument.