Hallo en welkom. In deze lezing wil ik het hebben over het
converteren van strings, wat meer stringfuncties.
Het is heel gebruikelijk om met name hoofdletters om te zetten.
Als je van je string alleen hoofdletters wilt maken, is er
gelukkig een functie met twee hoofdletters die
converteert van kleine letters naar hoofdletters
en een functie met twee lagere letters die van
hoofdletters naar kleine letters converteert. Dus kleine letters naar boven, boven naar beneden.
Beide functies retourneren ofwel het geconverteerde teken of hetzelfde
teken voor tekens die al in de juiste hoofdletters zijn
of niet converteerbaar zijn, zoals leestekens als u ze niet kunt converteren.
Dus dit is hoe je een string naar hoofdletters kunt converteren.
Onthoud dat deze eigenlijk per karakter
worden gebruikt.
Dus als je een buffer had die een karakterarray was, zou
je door elk element in de buffer moeten gaan en
dan een twee boven aan dat karakter doen.
Dus hier gaan we
door elk element in onze bufferkarakterarray en we geven
het door aan de twee bovenste methode.
En dat gaat een karakter teruggeven, dat is een hoofdletter en we gaan het toewijzen aan onze buffs door.
We gaan dat doen totdat we
het nulkarakter bereiken. Dit is dus een uitspraak van vier met maar één regel.
Dit converteert de hele tekenreeks in
hoofdletters met een buffersnelheid door de tekenreeks één teken per keer te doorlopen.
De lus stopt wanneer het het tekenreeksbeëindigingsteken, de backslash-nul, bereikt.
De cast van het type char is er omdat er twee bovenste returns zijn van het type int,
wat de ASCII-waarde is en het converteert het gewoon.
En je zou hetzelfde doen als je het naar kleine letters zou willen converteren,
heel eenvoudig om de functies voor het converteren van hoofdletters te gebruiken.
U kunt dus de functie two upper gebruiken in combinatie met de strstr-functie om uit te
zoeken of de ene string voorkomt in een andere, de hoofdletters negerend.
Dus laten we eens kijken naar dit voorbeeld dat precies dat doet.
Hier hebben we twee tekenreeksen, tekst en subtekenreeks.
Tekst is maat honderd, substring is maat veertig.
We vragen de gebruiker om een tekenreeks in te voeren die moet worden doorzocht, minder dan honderd tekens.
We snappen dat, we slaan het op in tekst.
En dan voeren we de string in die ze willen vinden met
de strstr, dus dan de substring, dus ze voeren een andere substring in.
We printen dan de eerste string en daarna printen we de tweede string.
Vervolgens converteren we beide strings naar hoofdletters.
En dan kunnen we zeggen dat de tweede string de eerste string heeft gevonden.
Dus als we strstr aanroepen,
kan het case negeren. Want onthoud, een van de beperkingen van strstr
was dat het hoofdlettergevoelig was.
En dus kunnen we nu strstr op
tekst en substring gebruiken omdat het allemaal hoofdletters zijn.
En nogmaals, dit is een manier om erachter
te komen of een substring in een hele string zit, waarbij case wordt genegeerd.
Eerst converteren we alles naar hoofdletters en nu vergelijken we hoofdletters, en dat
is wat dit programma doet.
Het is vaak zo dat u tekenreeksen naar getallen wilt converteren.
Er zijn dus specifieke functies die beginnen met een a.
Ze zijn als atof, atoi, atol en atol.
Atoi heel gebruikelijk, het converteren van een string naar een int.
Dus atof gaat een string converteren, en het
is als ASCII, ASCIItof. Het gaat een string converteren naar een datatype.
Dus een atof is een ASCII naar een vlotter of dubbel naar een vlotter.
En u kunt bepaalde retourwaarden hebben. Als het niet wordt gevonden of niet kan.
Dus soms kun je strings niet converteren naar gehele getallen, vooral als je een string hebt die alleen woorden bevat.
Meestal gebruikt u deze functie wanneer u in het voorbeeld.
Als je een tekenreeks hebt met 98. 4, dat kan worden weergegeven als een dubbel.
Dus je kunt er een atof op doen. Als je een tekenreeks van Jason
hebt, kun je die niet converteren naar een
floater, een geheel getal, dus er gebeurt niets. Dus als je tekenreeksen hebt die
getallen hebben, kun je ze converteren met deze ASCIIto-functies.
En dit is allemaal opgenomen in het standaard lib-headerbestand.
Je zult ook het tegenovergestelde zien
voor het maken van gehele getallen naar strings, je zult dingen zien als itoa, wat int is voor ASCII.
Als je een getal 98 had en je wilt het omzetten in een string, dan zou je itoa zeggen.
Er zijn ook enkele nieuwere functies.
Deze zijn specifiek voor string om te
verdubbelen in tegenstelling tot atof.
U kunt deze
strtod of strtof of stringtold gebruiken.
En ze zetten elk gewoon om in long doubles floats of floats doubles.
Maar een van beide is prima. De ASCII zijn de traditionele.
Ik denk dat de andere strtods en strtofs werden toegevoegd in latere normen van c.
Dus hier is een voorbeeld van het uitvoeren van enkele conversies.
Het is heel, heel basaal. Hier hebben we een str-tekenarray,
3. 5 ruimte 2. 5 ruimte 1. 26.
We hebben een paar aanwijzingen. En we gaan door
totdat we eruit springen als we het niet kunnen omzetten.
Dus we zeggen strtod. We geven ons adres
van onze ptr door, onze aanwijzer en we geven onze
p-reeks door die onze reeks is,
3. 5 2. 5.
Nu zou je kunnen zeggen waarom je de p str doorgeeft in plaats van alleen
de str en dat hoeft niet. Maar hier willen we echt controleren of
er geen conversie heeft plaatsgevonden.
Dus omdat we controleren op geen conversie, moeten we naar beide aanwijzingen kijken.
Je kunt de ptr niet vergelijken met de str omdat de str een array is.
Dus we gaan stuk pstr gebruiken om alleen onze tekenreeks weer te geven, zodat we kunnen vergelijken.
En als we die
twee vergelijken, betekent dit dat pstr geen conversie heeft opgeslagen,
en dus zijn we klaar. We waren niet in staat om die waarde daadwerkelijk om te zetten.
Anders, als we de waarde konden converteren, gaan we deze gewoon afdrukken
en gaan we voor de volgende conversie. Pstar wordt gelijk aan aanwijzer.
Dus je kunt dit uitvoeren en je kunt zien
dat het uiteindelijk alles in de stringarray zal converteren naar specifieke
waarden verdubbelt, dubbele waarden.
Ik gebruik meestal atoi, atof, maar een van
beide zal werken.
Dit zijn de conversiefuncties. Dank u.