| Monika90 | » 2015-01-05 00:26:09 | 
|  | 
| Krump Temat założony przez niniejszego użytkownika | » 2015-01-05 00:35:19 Monika, to już widziałem, ale nie chciałby tak głęboko korzystać z windowsowych rozwiązań, gdyż ten program może być potrzebny z czasem na serwery które stoją pod linuksem.
 SocrateZ, a da rade pobierać getline do char zmieniać to za pomocą tego co mi podsunąłeś i potem to wpisywać do stringa? Chodzi o to, że używam funkcji stringa (.erase .substr itp.) i teraz zmiana składników, niszczy cały mój algorytm. Nie ruszyło by to w ogóle mojego algorytmu, tylko dodało by parę linijek więcej, plus moja funkcje pol() zastępuje twoją z ASCII. Tylko szczerze nie do końca wiem jak to napisać. Zawsze char omijałem i ożywałem stringa, niezbyt lubię go i znam go tylko z teorii ;/
 | 
|  | 
| SocrateZ | » 2015-01-05 00:47:14 | Jeżeli się nie mylę, to w Linuksie UTF-8 po prostu działa. | 
 Potwierdzam. Właśnie to sprawdziłem. Tylko że te funkcje windowsowskie do niczego się nie przydadzą. Dobra... pętle musisz przerobić na coś takiego: const char * strtab = str.c_str();int length = str.length();
 int z = 0;
 
 while( x < length )
 {
 resnum = 0;
 y = get_char_bytes(( unsigned char ) strtab[ x ] );
 z = 0;
 sign = strtab[ x ];
 
 while( ++z < y )
 {
 resnum |= sign << 8 * y;
 printf( "%d ", sign );
 sign = strtab[ x + z ];
 }
 
 printf( "%d ", sign );
 resnum |= sign;
 
 printf( "%d (0x%X)\n", resnum, resnum );
 add_utf8_to_ansi_string( resnum, nfname, & x, 256 );
 }
Gdzie str to zmienna z nazwą pliku w formacie string. Znaki końcowe zostaną w tablicy nfname. Linuks to olewa i niezależnie od tego czy będzie formatowanie czy nie zmieni nazwę pliku na taką jaka ma być. | 
|  | 
| Krump Temat założony przez niniejszego użytkownika | » 2015-01-05 01:00:40 Własnie je przejrzałem na wpół spiąć i tez nie widzę zastosowania, najbardziej twoje mi pomoze, ale jak pisąłem wyzej, jeszcze nie to, bo mi szarga cały kod. Jak sadzisz o moim pomyśle, jest realny? I jak go dobrze zaimplementować. Chodzi mi najbardziej o getline() do charów i potem chary do stringów, bo przesiew ASCII i podmiana to moja funkcja pol() ze zmianami.
 
 A i jeszcze jedno! Tablica char musi być nieograniczona (stringi maja to domyślnie), bo w jednej linijce są dwie ścieżki (które rozdzielam po to mi .erase .substr itp) plus nowe windowsy nie maja ograniczenia ścieżek do 256 znaków.
 | 
|  | 
| SocrateZ | » 2015-01-05 01:02:09 Tablicę zawsze możesz zwiększyć nawet do 4096Tylko nie zapomnij zmienić wartości limit w funkcji add_utf8_to_ansi_string.
 
 Rozwiązanie które przedstawiłem jest zrobione "na siłę". Problem można rozwiązać na pewno inaczej.
 Niestety w tym momencie nic sensownego do głowy mi nie przychodzi.
 
 Poprzednie teorie z wchar_t okazały się błędne. Wiem bo sprawdzałem.
 
 PS: Co do tablicy końcowej, nie musisz mieć jej w stringu. Funkcja rename i tak przyjmuje tablicę znaków char.
 | 
|  | 
| Krump Temat założony przez niniejszego użytkownika | » 2015-01-05 07:24:57 Ale piszę, że na własnościach stringa opiera się cały mój algorytm przetwarzania danych, który nie należy do najprostszych, dlatego musi zostać. Coś z tym pokombinuje, chociaż liczyłbym na inną metodę, bardziej "nie na siłę". | 
|  | 
| SocrateZ | » 2015-01-05 12:19:42 W linuksie nic nie musisz robić (nie ważne co zrobisz i tak wyjdzie dobrze). Co do windowsa, wszystko co potrzebujesz zostało już w tym wątku pokazane. | 
|  | 
| Krump Temat założony przez niniejszego użytkownika | » 2015-01-05 13:50:08 Tak, ale napisałeś, że to metoda na siłę trochę. Może jest prostszy lepszy sposób, bardziej zoptymalizowany, chciałbym, aby się wypowiedział ktoś inny kto robi w C++, chciałbym poznać parę metod. Poza tym to będzie trochę ciężko napisać. | 
|  | 
| 1 2 « 3 »  4 5 |