String do tablicy charów
Ostatnio zmodyfikowano 2016-12-04 22:53
Taison Temat założony przez niniejszego użytkownika |
String do tablicy charów » 2016-12-04 19:55:07 Cześć, pisząc jeden ze swoich pierwszych programów napotkałem pewien problem. Mianowicie potrzebuję dokonać konwersji wprowadzonego na cin tekstu ze stringa na tablicę charów, gdzie każda komórka tablicy będzie korespondować adresem do miejsca litery w tekście. Potrzebne jest również to żeby konwersja nie zatrzymywała się po napotkaniu na spację.
Ma to wyglądać mniejwięcej w taki sposób:
string tekst; char tablica[50]
Ktoś wprowadza tekst, powiedzmy: Cos dlugiego
Konwersja--> tablica[0]=C; tablica[1]=O; tablica[2]=S; tablica[3]= (Jak zapisać tu spację, ustawić wartość na NULL?) tablica[4]=D;
|
|
carlosmay |
» 2016-12-04 20:15:52 Przepisanie stringa na cstringa znak po znaku nie wymaga żadnych dodatkowych zabiegów. Spacja to spacja, więc jest przepisywana normalnie. |
|
Taison Temat założony przez niniejszego użytkownika |
» 2016-12-04 20:38:48 Nie za bardzo rozumiem działanie funkcji strcpy. Obecnie mam coś takiego->
cin >> tekst_in; char * tablica1= new char[tekst_in.size() + 1 ]; strcpy( tablica1, tekst_in.c_str() );
for(int k=0; k<30; k++) cout << tablica1[k];
Teraz w sumie sobie uświadamiam, że potrzebuje jeszcze konwersji char na int |
|
carlosmay |
» 2016-12-04 21:09:57 Teraz w sumie sobie uświadamiam, że potrzebuje jeszcze konwersji char na int |
W jakim celu? Tablica char * i std::string to są łańcuchy znaków char (tablice). Różnicą jest terminator zerowy '\0' . Jawnie ustawiany w tablicy char * . W std::string też jest, ale nie jest on brany pod uwagę w długości ciągu. Przepisz w pętli znak po znaku ze stringa do cstringa i pamiętaj o ustawieniu '\0' na ostatniej pozycji w cstringu. Zakładanie tematów na forum |
|
mokrowski |
» 2016-12-04 22:53:48 #include <iostream> #include <string> #include <sstream> #include <iterator> #include <algorithm> #include <vector>
using namespace std;
vector < string > read_words() { vector < string > vec; string words; getline( cin, words ); istringstream in( words ); copy( istream_iterator < string >( in ), istream_iterator < string >(), back_inserter( vec ) ); return vec; }
int main() { vector < string > words = read_words(); vector < char *> words_null_terminated( words.size() ); transform( words.cbegin(), words.cend(), words.begin(),[]( const string & st ) { return st.c_str(); } ); }
|
|
« 1 » |