Cześć i witaj. W tym wykładzie chcę porozmawiać o konwersji ciągów,
o kilku innych funkcjach łańcuchowych.
W szczególności bardzo często konwertuje się wielkość liter.
Jeśli chcesz, aby twój łańcuch zawierał wszystkie wielkie litery, na
szczęście istnieje funkcja dwóch wielkich liter,
która konwertuje z małych liter
na wielkie, oraz funkcja dwóch małych, która konwertuje
z wielkich na małe. Czyli małe litery do góry, z góry do dołu.
Obie funkcje zwracają albo przekonwertowany znak, albo ten sam
znak dla znaków, które mają już poprawną wielkość liter lub
nie można ich zamienić, takich jak znaki interpunkcyjne, jeśli nie można ich przekonwertować.
Więc w ten sposób możesz przekonwertować ciąg na wielkie litery.
Pamiętaj, że są one faktycznie używane
na podstawie postaci.
Więc jeśli masz bufor, który był tablicą znaków, musiałbyś
przejść przez każdy element w buforze, a następnie
zrobić dwa górne na tym znaku.
Więc tutaj przechodzimy
przez każdy element w naszej tablicy znaków bufora
i przekazujemy go do dwóch górnych metod.
A to zwróci postać, to jest duża litera i przypiszemy ją do naszych wzmocnień o.
Będziemy to robić, dopóki nie trafimy
na znak zerowy. Więc to jest cztery stwierdzenie, które ma tylko jedną linię.
To konwertuje cały ciąg na
wielkie litery wskaźnika bufora, przechodząc przez łańcuch po jednym znaku na raz.
Pętla zatrzymuje się, gdy osiągnie znak zakończenia łańcucha, czyli lewy ukośnik zero.
Rzutowanie typu char istnieje, ponieważ dwa górne wyniki zwracane są typu int, który jest
wartością ASCII i po prostu ją konwertuje.
I zrobiłbyś to samo, gdybyś chciał przekonwertować to na małe litery,
bardzo proste w użyciu funkcje konwersji wielkości liter.
Możesz więc użyć funkcji dwa upper w połączeniu z funkcją strstr, aby dowiedzieć
się, czy jeden ciąg występuje w innym, ignorując wielkość liter.
Spójrzmy więc na ten przykład, który dokładnie to robi.
Tutaj mamy dwie tablice znaków, tekst i podciąg.
Tekst ma rozmiar sto, podciąg ma rozmiar czterdzieści.
Prosimy użytkownika o wpisanie szukanego ciągu, mniej niż sto znaków.
Rozumiemy, przechowujemy to w tekście.
Następnie wpisujemy ciąg, który chcą znaleźć za
pomocą strstr, a następnie podciąg, więc wprowadzają inny podciąg.
Następnie drukujemy pierwszy ciąg, a następnie drukujemy drugi ciąg.
Następnie konwertujemy oba ciągi na wielkie litery.
A potem możemy powiedzieć, że druga struna znalazła pierwszą.
Więc kiedy wywołujemy strstr, może
zignorować wielkość liter. Ponieważ pamiętaj, jednym z ograniczeń strstr
było rozróżnianie wielkości liter.
Więc teraz możemy użyć strstr na
tekście i podłańcuchu, ponieważ wszystkie są wielkimi literami.
I znowu, jest to sposób na
sprawdzenie, czy podciąg znajduje się w całym łańcuchu, ignorując wielkość liter.
Po pierwsze, po prostu konwertujemy wszystko na wielkie litery, a teraz porównujemy wielkie litery i
to właśnie robi ten program.
Często zdarza się, że chcesz przekonwertować ciągi na liczby.
Istnieją więc określone funkcje, które zaczynają się od a.
Są jak atof, atoi, atol i atoll.
Atoi jest bardzo powszechne, konwertuje ciąg znaków na int.
Więc atof zamieni ciąg znaków i to
jak ASCII, ASCIItof. Zamierza przekonwertować ciąg na typ danych.
Więc atof jest ASCII na float lub double na float.
Możesz mieć pewne wartości zwracane. Jeśli nie zostanie znaleziony lub nie może tego zrobić.
Więc czasami nie możesz zamienić łańcuchów na liczby całkowite, zwłaszcza jeśli masz łańcuch zawierający tylko słowa.
Zwykle używasz tej funkcji, gdy masz w przykładzie.
Jeśli masz ciąg znaków, który ma 98. 4, który można przedstawić jako podwójny.
Możesz więc zrobić na nim atof. Jeśli masz ciąg znaków Jason,
nie możesz go przekonwertować na liczbę całkowitą
typu floater, więc nic się nie stanie. Więc jeśli masz ciągi znaków zawierające
liczby, możesz je przekonwertować za pomocą tych funkcji ASCIIto.
A wszystko to jest zawarte w standardowym pliku nagłówkowym lib.
Zobaczysz także odwrotność tworzenia
liczb całkowitych w łańcuchach, zobaczysz takie rzeczy, jak itoa, czyli int do ASCII.
Gdybyś miał liczbę 98 i chciałbyś ją przekonwertować na łańcuch, powiedziałbyś itoa.
Jest też kilka nowszych funkcji.
Te są specjalnie dla string, aby podwoić,
w przeciwieństwie do atof.
Możesz użyć tych
strtod lub strtof lub stringtold.
I każdy z nich po prostu przekształca się albo w długie gry podwójne pływające, albo unoszące się podwójne.
Ale każdy z nich jest w porządku. Te ASCII są tradycyjne.
Myślę, że inne strtods i strtofs zostały dodane w późniejszych standardach c.
Oto przykład wykonywania niektórych konwersji.
To jest bardzo, bardzo proste. Tutaj mamy tablicę znaków str,
3. 5 spacja 2. 5 spacja 1. 26.
Mamy kilka wskazówek. I przechodzimy przez
to, dopóki nie wyskoczymy, jeśli nie możemy tego przekonwertować.
Więc mówimy strtod. Przekazujemy nasz adres
naszego ptr, nasz wskaźnik i przekazujemy w naszym
ciągu p, który jest naszym łańcuchem,
3. 5 2. 5.
Teraz możesz powiedzieć, dlaczego podajesz p str, a nie tylko str
i nie musisz tego robić. Ale tutaj chcemy faktycznie sprawdzić, czy
nie było konwersji.
Więc ponieważ sprawdzamy, czy nie ma konwersji, musimy spojrzeć na oba wskaźniki.
Nie możesz porównać ptr do str, ponieważ str jest tablicą.
Więc zamierzamy użyć piece pstr do reprezentowania naszej tablicy znaków, abyśmy mogli porównać.
A jeśli porównamy
te dwa, oznacza to, że plik pstr nie
przechował konwersji, więc gotowe. Nie byliśmy w stanie faktycznie przeliczyć tej wartości.
W przeciwnym razie, gdybyśmy byli w stanie przekonwertować wartość, po prostu wydrukujemy
ją, a następnie przejdziemy do następnej konwersji. Pstar będzie równy wskaźnikowi.
Możesz więc to uruchomić i zobaczyć, że skończy
się to konwersją wszystkiego w tablicy ciągów na określone
wartości, podwójne, podwójne wartości.
Zwykle używam atoi, atof, ale każdy
z nich zadziała.
To są funkcje konwersji. Dziękuję Ci.