de-vraag
  • Pytania
  • Tagi
  • Użytkownicy
Powiadomienia
Nagrody
Rejestracja
Po zarejestrowaniu się, będziesz otrzymywać powiadomienia o odpowiedziach i komentarzach do swoich pytań.
Zaloguj się
Brak tłumaczeń pasujących do Twojego wyszukiwania Jeśli masz już konto, zaloguj się, aby sprawdzić nowe powiadomienia.
Za dodane pytania, odpowiedzi i komentarze przewidziane są nagrody.
Więcej
Źródło
Edytuj
 Mario
Mario
Question

std::string na char*

Chcę przekonwertować std::string na typ danych **char* lub char[]**.

std::string str = "string";
char* chr = str;

Wyniki: "error: cannot convert 'std::string' to 'char' ... ".

Jakie metody są dostępne, aby to zrobić?

303 2011-09-08T17:25:22+00:00 3
Programowanie
c++
string
char
Popular videos
Строки в с++. Нуль терминатор. Что такое строка в с++. char c++ массив. С++ Для начинающих. Урок #60
Строки в с++. Нуль терминатор. Что такое строка в с++. char c++ массив. С++ Для начинающих. Урок #60
4 lata temu
Optimizing the usage of std::vector in C++
Optimizing the usage of std::vector in C++
4 lata temu
Kurs C++ odc. 8: Łańcuchy. Typ string. Tablice char. Tabela ASCII
Kurs C++ odc. 8: Łańcuchy. Typ string. Tablice char. Tabela ASCII
8 lat temu
How to convert strings to numbers in C
How to convert strings to numbers in C
2 lata temu
Convert std::string to const char*
Convert std::string to const char*
1 rok temu
How Strings Work in C++ (and how to use them)
How Strings Work in C++ (and how to use them)
4 lata temu
C++ Console Lesson 45: Using Wide Char Array Strings
C++ Console Lesson 45: Using Wide Char Array Strings
12 lat temu
Convert String to Char in c++ and c# 45
Convert String to Char in c++ and c# 45
3 lata temu
12.4 std::string conversion to char* and search functions
12.4 std::string conversion to char* and search functions
1 rok temu
Convert String to Char in c and c++ 18
Convert String to Char in c and c++ 18
1 rok temu
Convert String List to Char List in c++ and c# 47
Convert String List to Char List in c++ and c# 47
3 lata temu
How to make your STRINGS FASTER in C++!
How to make your STRINGS FASTER in C++!
2 lata temu
Easy C++ Tutorial Convert a string to a char array
Easy C++ Tutorial Convert a string to a char array
11 miesięcy temu
CppCon 2016: Nicholas Ormrod “The strange details of std::string at Facebook"
CppCon 2016: Nicholas Ormrod “The strange details of std::string at Facebook"
5 lat temu
05.1 Строковый тип данных (char, string)
05.1 Строковый тип данных (char, string)
1 rok temu
« Poprzedni
Następny »
To pytanie ma 1 odpowiedź w języku angielskim, aby je przeczytać zaloguj się na swoje konto.
Solution / Answer
 orlp
orlp
8. września 2011 в 5:27
2011-09-08T17:27:19+00:00
Więcej
Źródło
Edytuj
#13347819

Nie będzie on automatycznie konwertowany (dzięki Bogu). Będziesz musiał użyć metody c_str(), aby uzyskać wersję łańcuchową w języku C.

std::string str = "string";
const char *cstr = str.c_str();

Zauważ, że zwraca ona const char *; nie wolno ci zmieniać łańcucha w stylu C zwróconego przez c_str(). Jeśli chcesz go przetworzyć, będziesz musiał go najpierw skopiować:

std::string str = "string";
char *cstr = new char[str.length() + 1];
strcpy(cstr, str.c_str());
// do stuff
delete [] cstr;

Lub w nowoczesnym C++:

std::vector<char> cstr(str.c_str(), str.c_str() + str.size() + 1);
 orlp
orlp
Edytowana odpowiedź 20. września 2016 в 6:35
620
0
Lightness  Races with Monica
Lightness Races with Monica
8. września 2011 в 5:27
2011-09-08T17:27:34+00:00
Więcej
Źródło
Edytuj
#13347821
  • Jeśli chcesz tylko ciąg w stylu C reprezentujący tę samą zawartość:

      char const* ca = str.c_str();
  • Jeśli chcesz mieć ciąg w stylu C z nową zawartością, jednym ze sposobów (biorąc pod uwagę, że nie'znasz rozmiaru ciągu w czasie kompilacji) jest dynamiczna alokacja:

      char* ca = new char[str.size()+1];
      std::copy(str.begin(), str.end(), ca);
      ca[str.size()] = '↪Sm_2217;;

    Nie zapomnij skasować[] tego później.

  • Jeśli chcesz zamiast tego statycznie przydzieloną tablicę o ograniczonej długości:

      size_t const MAX = 80; // maksymalna liczba znaków
      char ca[MAX] = {};
      std::copy(str.begin(), (str.size() >= MAX ? str.begin() + MAX : str.end()), ca);

strd::string` nie konwertuje niejawnie do tych typów z tego prostego powodu, że potrzeba zrobienia tego jest zazwyczaj zapachem projektowym. Upewnij się, że naprawdę tego potrzebujesz.

Jeśli definitywnie potrzebujesz char*, najlepszym sposobem jest prawdopodobnie:

vector<char> v(str.begin(), str.end());
char* ca = &v[0]; // pointer to start of vector
Lightness  Races with Monica
Lightness Races with Monica
Edytowana odpowiedź 10. lipca 2013 в 9:56
15
0
Mark B
Mark B
8. września 2011 в 5:27
2011-09-08T17:27:25+00:00
Więcej
Źródło
Edytuj
#13347820

Zakładając, że potrzebujesz tylko łańcucha w stylu C do przekazania jako dane wejściowe:

std::string str = "string";
const char* chr = str.c_str();
6
0
Dodaj pytanie
Kategorie
Wszystkie
Technologia
Kultura / Rekreacja
Życie / Sztuka
Nauka
Profesjonalny
Biznes
Użytkownicy
Wszystkie
Nowy
Popularny
1
365
Zarejestrowany 1 dzień temu
2
True Image
Zarejestrowany 1 dzień temu
3
archana agarwal
Zarejestrowany 3 dni temu
4
Maxim Zhilyaev
Zarejestrowany 6 dni temu
5
adambotsfford adambotsfford
Zarejestrowany 1 tydzień temu
BG
DA
DE
EL
ES
FR
ID
IT
JA
KO
LT
NL
PL
PT
RU
SL
TR
ZH
© de-vraag 2022
Źródło
stackoverflow.com
na podstawie licencji cc by-sa 3.0 z przypisaniem