Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

String do tablicy charów

Ostatnio zmodyfikowano 2016-12-04 22:53
Autor Wiadomość
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;



 
P-154501
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.
P-154504
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
P-154507
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.

» Porady dla użytkowników cpp0x.plZakładanie tematów na forum zalecenie
P-154508
mokrowski
» 2016-12-04 22:53:48
C/C++
#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();
   
    // Nie wiem po co. Przecież string z Twojego pytania ma dostęp przez operator[]
    // Jednak jeśli się upierasz co do stringów "w stylu C" to...
    vector < char *> words_null_terminated( words.size() );
    transform( words.cbegin(), words.cend(), words.begin(),[]( const string & st ) {
        return st.c_str();
    } );
}
P-154518
« 1 »
  Strona 1 z 1