De fleste av oss må ha kommet over feil som “Kan ikke konvertere std :: streng til char [] eller char* datatype.”Vi lærer hvordan du kan oversette en streng til en karaktergruppe i denne artikkelen. La oss sjekke noen av dem en om gangen.
Alle disse nye metodene vil hjelpe oss å forklare den nye teknikken for å gjøre det samme, men med en annen tilnærming. Det kommer til å utvide kunnskapen vår for å se problemer fra forskjellige vinkler og realisere og bruke forskjellige tilnærminger for å løse det problemet fra hvert perspektiv.
For å endre og endre strenger og tegn, tilbyr C ++ enkle og effektive teknikker. Vi vil gå over noen av de mest grunnleggende strengmanipulasjonsfunksjonene og noen eksempler på hvordan du bruker dem. Den viser også hvordan du bruker noen av Boost Library -fasilitetene for å utvide C ++ 's streng og karakterfunksjonalitet.
Først, la oss opprette en fil i terminalen vår ved å bruke følgende kommando:
$ nano dev.CPP
Kommandoen ovenfor vil åpne en C ++ -fil for bruk i terminalen til Alpine Linux 3.12.0, og nå kan vi begynne å implementere eksemplene våre.
Eksempel nr. 1:
En av de første metodene vi vil bruke i vårt første eksempel er å kopiere dataene om streng i en rekke røye. Kopiering av strengdata til Char kan utføres ved hjelp av CString Library -funksjoner c_str () og strcpy ().
For å returnere pekeren til en matrise som inneholder en null-avsluttet sekvens av tegn som representerer den nåværende verdien av strengen, brukes c_str ().
Det er ingen endringer i strengen hvis et unntak kastes. Ved hjelp av funksjonen strcpy () kopierer vi fra streng til røye når det er nødvendig for å få tilgang til eller finne individuelle elementer. Når vi kopierer den, kan vi bruke den som en matrise. Strenglengden skal ikke være mindre enn lengden på char -arrayen.
I dette eksemplet vil vi først sette våre nødvendige biblioteker i overskriften; I vårt tilfelle trenger vi IOSTREAM- og CSTRING -biblioteker. Vi har tenkt å konvertere vår "utvikler" -streng til røye “d e v e l o p e r.”
Vi har initialisert en streng S = "Utvikler", lagret lengden i et heltallnavn "N", og vi har også erklært en char -matrise der vi lagrer våre konverterte røye -tegn fra strengen. Ved hjelp av StrcPy () kopierer vi dataene fra String “S” og plasserer dem i Char -arrayen.
Nå som vi har konvertert eller kopiert strengen til en char -matrise, vil vi bruke til Loop for å vise eller skrive ut røye -tegnene for å sikre at vi får de samme tegnene.
Vi skal kompilere et C ++ -program ved hjelp av følgende kommandoer.
$ g ++ -o dev dev Dev.CPP
For å sjekke om Char -matrisen vår har mottatt de kopierte dataene fra strengen “S” med hell eller ikke, må vi utføre programmet vårt ved å bruke følgende kommando vist nedenfor:
$ ./Dev
Utgangen fra følgende program er gitt nedenfor; Som vi kan se, har vi vellykket kopiert og konvertert strengene våre til Char ved hjelp av strcpy () -funksjonen.
Eksempel nr. 2
Dette eksemplet er for de som er ukomfortable med det første eksemplet og ønsker å utvide kunnskapen og praksisen. Dette er kanskje den mest gjennomførbare og effektive tilnærmingen. Posisjonen til strengens første karakter kan tilordnes direkte til en peker til røye. Imidlertid, hvis resonnementet ditt krever en duplikat av strengen, bør dette være den valgte metoden.
I eksemplet ovenfor bruker vi ingen kopieringsfunksjoner som StrcPy (), men det betyr ikke at vi gjør det på den harde måten. Vi må tenke smart.
Først må vi erklære og initialisere en pekergruppe og gjøre det til et poeng til en matrise. Vi har strengobjektet vårt klart til å bli konvertert i form av STR (“Dveloper”). Vi har direkte tildelt det første objektet av strengen STR til pekeren, som vil trekke ut alle andre objekter langs.
For eksempel, hvis vi gir det "CharArray = & Str [2]", vil det ta tak i bokstaven "V" i "utvikleren" og skrive ut alle de andre objektene, som "veloper.”Utgangen fra følgende program er vist nedenfor; Som det kan sees, konverterte vi vellykket strengen vår til røye ved hjelp av direkte peking i stedet for strcpy () -funksjonen.
Eksempel nr. 3
Dette eksemplet er for personene som leter etter et godt eksempel uten absolutt ingen funksjon og et innebygd bibliotek for konvertering.
I eksempel nr. 3 skal vi benytte oss av en enkel algoritme der vi skal følge trinnene nedenfor:
Målet er å konvertere strenger til chars. Vi vil begynne med å tildele en verdi til strengen som vi ønsker å konvertere til Char, som er programmets mål. Vi skal bruke til loop og få den til å kjøre til størrelsen på strenglengden.
I denne metoden itererer vi gjennom alle karakterer av den gitte strengen og tildeler dem alle til Char Array's respektive indeks. I for -sløyfen legger vi hvert strengobjekts tilsvarer objektverdien til char -arrayen, som automatisk fyller hele char -matrisen med strengen.
Utfallet av følgende program er vist nedenfor, som kan sees. Vi brukte en enkel for loop for å konvertere en streng til røye.
Eksempel 4
Det fjerde eksemplet handler om den enkle kopien () -funksjonen som også kan brukes til å konvertere strengen til tegn. Det er ikke noe annerledes i dette programmet fra andre metoder; Vi må bare bruke en enkel funksjon av Copy () som tar tre argumenter: Begynn slutten, array -navnet.
For eksempel må vi kopiere streng STR til karakterens array -navn CharArray. Vi kan bruke følgende syntaks:
# Kopi (str.Begynn (), Str.End (), CharArray)
Etter å ha kjørt følgende funksjon med riktig syntaks, kan vi skrive ut følgende matrise som vi har overført følgende streng.
Som et resultat har vi følgende utdata, som bringer oss til vårt mål om å konvertere en streng til et tegn til et tegn.
Konklusjon:
Til slutt håper vi at vi klarte å få deg til å gå gjennom noen av eksemplene der du kan konvertere streng til røye på mer enn en måte. Artikkelen ovenfor diskuterte flere teknikker for å konvertere en streng til tegn i Alpine Linux 3.12.0. For å oppnå dette gikk vi over fire forskjellige teknikker som du kan bruke for å konvertere en streng til tegn i C ++. Disse tre forskjellige teknikkene var StrcPy () -funksjonen, kopien () -funksjonen, iterasjonen for loop og bruk av pekere. Som et resultat vil disse forklaringene komme ganske nyttige for når du trenger å konvertere en streng til chars i Alpine Linux 3.12.0 c++.