std::string::c_str()
pobiera wskaźnik const char*
do tablicy znaków, która reprezentuje ciąg (zakończone znakiem NUL).
Nie należy manipulować danymi, na które wskazuje ten wskaźnik, więc jeśli trzeba to zrobić, skopiuj dane.
Podwójna edycja - robi to w bardziej C++ mody
Ponieważ jest ładniejszy w celu uniknięcia stosowania surowych wskaźników i tablic, gdzie to możliwe, można również uzyskać dane do programu std::vector<char>
#include <string>
#include <vector>
int main()
{
std::string str = "Hello";
std::vector<char> cvec(str.begin(), str.end());
// do stuff
}
Edycja to bardziej jak C ponieważ wykorzystuje surowe wskaźniki i wyraźnie przydziela MEM
#include <string>
#include <cstring>
int main()
{
std::string str = "Hello";
char *cptr = new char[str.size()+1]; // +1 to account for \0 byte
std::strncpy(cptr, str.c_str(), str.size());
// do stuff...
delete [] cptr;
}
Dlaczego chcesz to zrobić? – GManNickG
@GMan: istnieje wiele powodów, z których główny wywołuje funkcje w C API? –
@Gman Ponieważ muszę przekazać zmienną foobar do funkcji inet_pton UDT, która pobiera tylko zmienne typu char *. –