Konwertuj const char * na std :: string


Mam
const char *
zwrócone z funkcji przetwarzania i chciałbym przekonwertować/przypisać go do wystąpienia
std :: string
w celu dalszej manipulacji. Wydaje się, że powinno to być proste, ale nie udało mi się znaleźć żadnej dokumentacji pokazującej, jak należy to zrobić. Oczywiście czegoś mi brakuje. Doceniamy wnikliwość.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

std :: string
ma konstruktora z
const char *
. Oznacza to, że legalne jest pisanie:
const char* str="hello";
std::string s = str;
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Spróbuj
const char * s = "hello";
std::string str(s);

wykona swoją pracę.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

std :: string
ma konstruktora, który niejawnie konwertuje
const char *
. W większości przypadków nie musisz nic robić. Po prostu podaj
const char *
, gdzie akceptowany jest
std :: string
i zadziała.
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Istnieją trzy możliwości. Możesz użyć konstruktora, operatora przypisania lub funkcji składowej
assign
(oprócz funkcji składowej
insert
, chociaż można jej również użyć :)) `
na przykład
#include <iostream>
#include <string>const char * f() { return "Hello Fletch"; }int main()
{
std::string s1 = f(); std::string s2;
s2 = f(); std::string s3;
s3.assign( f() ); std::cout << s1 << std::endl;
std::cout << s2 << std::endl;
std::cout << s3 << std::endl;
}
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Masz wiele możliwości:
const char* dosth() { return "hey"; }string s1 = dosth();
string s2 (dosth());
string s3 {dosth()};
auto s4 = (string)dosth();

Demonstracja na żywo
http://coliru.stacked-crooked. ... 7b819
,

Dokumentacja
http://en.cppreference.com/w/c ... tring
Zwróć uwagę, że
s3
i
s4
to funkcje C ++ 11 i jeśli nadal musisz pracować ze starym lub niekompatybilnym kompilatorem, będziesz musiał pracować z jednym z pozostałych opcje ...

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się