Mam prośbę czy mógłby ktoś mi przedstawić jakiś prosty pomysł przerzucenia z tablicy stringów (są tam kody złożone z 0 lub 1) na tablicę charów. Nie wiem w jaki sposób po prostu przepisać tablicę stringów na tablicę charów. Muszę skorzystać z obcięcia bitu a na tablicy stringów nie mogę tego zrobić.
Może napisz jaśniej co chcesz osiągnąć. Najlepiej z przykładami.
Mam tablicę stringów gdzie w każdy element jest ciągiem znaków 0 i 1 np. string tab[]={011101,11101,1111,000000001,10111101} i chcę, żeby te wartości zapisać w tablicy charów.
PS: W zasadzie to nie nawet charów ale unsigned charów żeby były zapisane na 8 bitach.
int main()
{
string tab[2];
tab[0] = "01010101000010100";
tab[1] = "0101000100101010110";
char tekst[tab[0].length()]
strcpy(tekst, tab[0].c_str());
return 0;
}
??
Czyli jaki chcesz efekt? Mają być połączone? Zsumowane? Przekształcone? Tak ciężko dać przykład jak nie umiesz tego opisać?
gswidwa napisał(a):
int main()
{
string tab[2];
tab[0] = "01010101000010100";
tab[1] = "0101000100101010110";
char tekst[tab[0].length()]
strcpy(tekst, tab[0].c_str());
return 0;
}
??
Niestety nie działa to na unsigned charach. Próbowałem to zrobić w ten sposób
void zamianastringnachar(unsigned char charkody[],string kody[])
{
string ciag;//ciag liczb reprezentujacych kod
for (int i = 0; i <= 127; ++i)
{
ciag = kody[i];
strcpy(charkody[i], ciag.c_str);
}
}
PS:Mniej więcej wygląda to tak mam tablicę strignów gdzie są te kody zero jedynkowe i muszę zrobić z tego tablice unsigned charów też tyle samo elementowa w moim przypadku 128 żeby te kody zapisać w tablicy unsigned charów.
Jeśli ma to coś to rzeczy to kody są maksymalnie 7 liczbowe
?
int main()
{
string tab[2];
tab[0] = "01010101000010100";
tab[1] = "0101000100101010110";
unsigned char tekst[tab[0].length()];
strcpy((char*)tekst, tab[0].c_str());
cout << tekst;
return 0;
}
void zamianastringnachar(unsigned char charkody[],string kody[])
{
string ciag;
for (int i = 0; i <= 127; ++i)
{
ciag = kody[i];
unsigned char tekst[ciag.length()];
strcpy((char*)tekst, kody[i].c_str());
}
}
Wyskakuje mi błąd "function call must have a constant value in a constant expression"
string ciag;
int rozmiar = zaokraglij(volume, 8) * 7;
for (int i = 0; i <= 127; ++i)
{
ciag = kody[i];
unsigned char *tablica = new unsigned char(rozmiar);
strcpy((char*)tablica, ciag.c_str());
obciecieBitu(tablica, volume, data, numery);
ciag = "";
}
Czy to będzie poprawne zapisanie tych stringów do tablicy ?
Wiadomo, że maksymalny rozmiar stringu to 7
void zamianastringnachar(unsigned char charkody[],string kody[])
{
for (int i=0;i<128;++i) // to <=127 czemu nie <128
{
const unsigned char *tekst=reinterpret_cast<const unsigned char *>(kody[i].c_str());
unsigned char *ub=reinterpret_cast<unsigned char *>(&kody[i][0]); // jest to UB ale jeszcze nie spotkałem środowiska gdzie zadziała niezgodnie z oczekiwaniem.
}
}