String Literals in C++

Поділитися
Вставка
  • Опубліковано 3 жов 2024
  • Patreon ► / thecherno
    Twitter ► / thecherno
    Instagram ► / thecherno
    Slack ► slack.thechern...
    How Strings Work ► • How Strings Work in C+...
    Series Playlist ► • C++
    Gear I use:
    -----------------
    BEST laptop for programming! ► geni.us/pakTES
    My FAVOURITE keyboard for programming! ► geni.us/zNhB
    FAVOURITE monitors for programming! ► geni.us/Ig6KBq
    MAIN Camera ► geni.us/t6xyDRO
    MAIN Lens ► geni.us/xGoDWT
    Second Camera ► geni.us/CYUQ
    Microphone ► geni.us/wqO6g7K

КОМЕНТАРІ • 238

  • @danielc4267
    @danielc4267 6 років тому +410

    Charno talking about char related stuff.

  • @ahumanzr
    @ahumanzr 3 роки тому +259

    Cherno: 6:00 "Please never spell it like that ever"
    The top five comments: "Charno"

  • @dimitri929
    @dimitri929 4 роки тому +138

    The Charno is making one of the best c++ tutorials

  • @h.hristov
    @h.hristov 7 років тому +516

    Thanks Charno! A very informative video on string literals

    • @strange1702
      @strange1702 Рік тому +2

      after 5years top comment does not even have a single reply lol

    • @VortexInfoTech-gw8hp
      @VortexInfoTech-gw8hp Рік тому

      In this video he said the correct is Cherno not Charno

    • @strange1702
      @strange1702 Рік тому +3

      @@VortexInfoTech-gw8hp he was joking 🤣 you should understand what joke is lol

    • @brandx5443
      @brandx5443 Рік тому

      I'd swear he said Chaarno. @@VortexInfoTech-gw8hp

  • @LucidStew
    @LucidStew 7 років тому +317

    Thanks again for the great series, Charno

  • @tiancilliers
    @tiancilliers 6 років тому +173

    TheCharnoProject back at it again with great vids!

  • @blank-vw2sb
    @blank-vw2sb 3 роки тому +62

    Cherno: please never spell it like that ever.
    99% comments: The CHARNO!

  • @prayagparikh8020
    @prayagparikh8020 3 роки тому +74

    Great tutorial Charno! Keep it up, Charno!!

  • @kanishk9490
    @kanishk9490 3 роки тому +67

    The auto generated subtitles be like : "Hey What's up guys my name is Archana and welcome back to my figure of blood theory"

    • @forhadrh
      @forhadrh 2 роки тому +2

      Yeap we admit, youtube subtitle still sucks a lot 😖

    • @helpfulsquid2502
      @helpfulsquid2502 2 роки тому

      AHAHAH true, I've noticed some similar examples in his other videos

  • @KPkiller1671
    @KPkiller1671 7 років тому +303

    Charno

    • @zyansheep
      @zyansheep 4 роки тому +21

      Lesson Learned: Never ask the internet not to do something

    • @UA441
      @UA441 3 роки тому

      I would make that joke!

    • @woosix7735
      @woosix7735 3 роки тому

      Charno

  • @DainYanuka
    @DainYanuka 5 років тому +30

    I like how the subtitles said 'White Cabbage' instead of 'Wide Character' at 6:55 xD Thanks Charno for the great vid!

  • @teachyourselfcs
    @teachyourselfcs Рік тому +13

    Don't stop being this deep with your explanations (strings in the stack vs read-only segment, heap, etc) for students like me this is the first "top to bottom" example that lets me integrate all the theoretical concepts in a single video explanation. You are a top class teacher (and programmer 😄) that allows me to connect all the dots

  • @AdonaiDio
    @AdonaiDio Рік тому +7

    The hardest on the playlist so far.
    Great video!
    I understood better than reading the books I bought.

  • @92309858
    @92309858 7 років тому +129

    Charno:)

  • @XaviosAedifica
    @XaviosAedifica 4 роки тому +20

    The moment you said Charno I preemptively laughed becaused I knew the comments would be nothing but Charno

  • @master138
    @master138 2 роки тому +5

    10:15 That R thing was pretty useful. Specially for somebody who does GUI apps with a lot of error/warning dialogs.

  • @muhammadtaimourafzal5285
    @muhammadtaimourafzal5285 3 роки тому +15

    Cherno: "Confused about strings ? Aren't we all !!!"

  • @hanzofactory
    @hanzofactory 2 роки тому +11

    Cherno I just wanted to say that thank you so much for this series. I recently got into professional training for RealTime Embedded, and since we program mainly in C, all of this knowledge of the backside of C/C++ has come in incredibly useful since we work at a very low-level environment. You have no idea how grateful I am, I would have had a much harder time if it weren't for you!

  • @poonikarthu4988
    @poonikarthu4988 2 роки тому +9

    Extremely helpful tutorial Charno! Keep it up!

  • @davitgoderdzishvili9187
    @davitgoderdzishvili9187 7 років тому +19

    amazing! this is one of the best channels about c++

  • @Erebus2075
    @Erebus2075 5 років тому +18

    these are definately the best C++ serie i've seen.
    easily understood and it is very nice to get what is happening behind the scenes; makes it easier to grasp ^^

  • @OFaruk58
    @OFaruk58 6 років тому +16

    thanks Charno !
    great vids

  • @cajogos
    @cajogos 4 роки тому +8

    I've been a subscriber for years man, I remember doing your old Java game engine series! Now that I am doing C++ at uni, these series is what I've been looking for! So glad you are still doing them :D

    • @ezshroom
      @ezshroom 4 роки тому +1

      I was looking for how to make games in Java and I saw his videos, then I had a look around and found these

  • @sallaklamhayyen9876
    @sallaklamhayyen9876 2 роки тому +3

    awesome thank you Chreno
    we need more like that in detail explanations

  • @stathisstathopoulos9007
    @stathisstathopoulos9007 5 років тому +7

    Thanks a ton Charno, nice vid!

  • @ImmortalSoulOfIndia
    @ImmortalSoulOfIndia 2 роки тому +2

    Hey Charno, I saw a very informative session on "String Literals". And It is explained well too. Hats off you Man. I am from INDIA.

  • @exnaruto1
    @exnaruto1 7 років тому +3

    Yes! Finally caught up

  • @francobarrera5327
    @francobarrera5327 Рік тому +1

    Nice video Charno! ♥

  • @daniyelzhumankulov7733
    @daniyelzhumankulov7733 4 роки тому +2

    You are really amazing!!!!!please don't stop making videos. I truly think your series of these c++ tutorials are on of the most useful ones on the internet

  • @TalisBarbalho
    @TalisBarbalho 7 років тому +3

    Loving the videos and frequency. Thank you so much. It gets more and more exciting the more advanced you go.

  • @shushens
    @shushens 3 роки тому +4

    Q: What would be Charno's next vacation spot?
    A: Charno-bill.

    • @suntzu1409
      @suntzu1409 3 роки тому +1

      I see what you did here

  • @iwolfman37
    @iwolfman37 2 роки тому +1

    I'm not sure if this was the same back when he made the video, but there's actually a different wat to spread a string out over multiple lines, a method which actually applies to all types of statements, not just those that contain strings. To spread a statement over multiple lines, you simply use the backslash at the end of the line. So for example:
    const char* helloWorld = "Hello \
    World !"; // This compiles to a string that would print out as simply "Hello World !" and is considered a (const char[14]).
    And this method applies to any statement like I said, so you could also write a statement like this one:
    int a = 1 + \
    2; // And this would also compile just fine and print out int a as 3.

  • @youcefbouda6856
    @youcefbouda6856 Рік тому +1

    That's gonna be useful, thanks Charno

  • @krec348
    @krec348 7 років тому +2

    Things get more interesting from time to time... Awesome work Cherno :)

  • @yamgabby8715
    @yamgabby8715 4 роки тому +1

    Thank you Charno !

  • @raashidansari
    @raashidansari 7 років тому +2

    I am amazed by how much I learned today! Thanks @TheChernoProject.

  • @LS-cb7lg
    @LS-cb7lg 3 роки тому +1

    char[] s = "Love your series, Cherno!"; s[20] = 'a'; std::cout

  • @StevenMartinGuitar
    @StevenMartinGuitar 2 роки тому +1

    Thanks The Charno!

  • @yogurtbee7050
    @yogurtbee7050 9 місяців тому

    So many thanks to you Charno , hh , A super excellent video I've ever seen on string literals, awesome ! you are my super hero !

  • @kishorekurapati9172
    @kishorekurapati9172 Рік тому

    Cherno mentioned that const char array can be modified in previous video.
    In this video, he told that it was by mistake. This c++ series is one of the best c++ tutorials. Even paid tutorials are not this professional or shares such knowledge.

  • @bluehornet6752
    @bluehornet6752 4 роки тому +7

    At 6:35, MSVC now seems to care as of VS2019: It now requires me to make it a const char*...

    • @xrafter
      @xrafter 4 роки тому +1

      Yes they change it.
      But it still will give an warning not.
      An error so it is okay

  • @FreeDomSy-nk9ue
    @FreeDomSy-nk9ue 2 роки тому +1

    I think you're wrong about this 11:16. I just tested it and the string gets modified in place both in release and debug mode.
    Even the assembly I got is different than the one you got. In my case it was 3 lines of assembly where the index was loaded into eax and the string was modified at eax!
    @The Cherno

  • @Popart-xh2fd
    @Popart-xh2fd 2 роки тому +1

    10:36 Here you have just shown that it's possible to append strings by simple not using the + sign and separate them with a blank space!

  • @shakedmigdal6364
    @shakedmigdal6364 2 роки тому

    "ohh look a nice string quirky stuff that i didn't know"
    "OH MY LORD IS THIS THE ASSEMBLY FILE"
    thats pretty much sums my reaction.
    great video

  •  7 років тому +1

    use move
    void PrintStr(std::string&& string)
    {
    string += 'h';
    std::cout

  • @kavindaravishan7351
    @kavindaravishan7351 2 роки тому

    wow Charno, this course is amazing.

  • @dabodyx
    @dabodyx 2 роки тому +1

    here i am 5 years later, joining the charno hype

  • @entity5209
    @entity5209 3 роки тому +3

    Oh god imagine learning string s 2nd time here lol I know what string does but im still watching this video charno explains what they actually r and I'd rather know what I'm typing instead of just typing it and expect it to work just to end up with bunch of bugs the charno cpp tutorials r the best

  • @GenericPhantom1
    @GenericPhantom1 Рік тому

    String literals are a series of characters between two double quotes

  • @bitmobile5587
    @bitmobile5587 Рік тому +1

    Thanks Che\0! Great tutorial!

  • @colorlord98
    @colorlord98 7 років тому +27

    Charno!

  • @shishirjais
    @shishirjais 4 роки тому +3

    You're "literal"ly the best.

  • @des_sun1x
    @des_sun1x 5 років тому +1

    Thanks charno

  • @martiananomaly
    @martiananomaly 2 роки тому

    Another great video by The Charno!

    • @mikicerise6250
      @mikicerise6250 2 роки тому +1

      ALL LIES!!!! THE REAL REASON COMPUTERS WORK IS DAEMONS MAKE THEM WORK CUZ BILL GATES PRAYED TO SATAN!!!!! OPEN YOUR EYES!!!!

  • @batman_1st
    @batman_1st 5 років тому +1

    Thanks charno

  • @marlonbrade9004
    @marlonbrade9004 4 роки тому

    Hey i just notice that if you go ,
    std::wstring name0 = L"Cherno" s + L"cherno";
    when printing you should also include, std::wcout

  • @Gunslinger962
    @Gunslinger962 6 років тому +7

    thanks Charno!

  • @murtazahussain6301
    @murtazahussain6301 3 роки тому +1

    Thanks Charno

  • @sfafsashfdh6589
    @sfafsashfdh6589 2 роки тому

    nice video charno

  • @higiniofuentes2551
    @higiniofuentes2551 Рік тому

    Thank you for this very useful video!

  • @ibrahimg.4469
    @ibrahimg.4469 3 роки тому

    Thank you

  • @mirtinhoxereto1748
    @mirtinhoxereto1748 3 місяці тому

    6:05 Ch97no is testing reverse psychology!

  • @sree4448
    @sree4448 3 роки тому

    this really helped,thanks

  • @Durgasivakumaran
    @Durgasivakumaran 5 років тому

    Really awesome. Thanks for effort

  • @onurucar1112
    @onurucar1112 4 роки тому +1

    thanks charno :)

  • @JoCS11152
    @JoCS11152 Рік тому +1

    mind fucking blowing

  • @VictorOrdu
    @VictorOrdu 5 років тому

    Fantastic stuff!

  • @mohammedamer8075
    @mohammedamer8075 Рік тому

    thanks

  • @nickey0207
    @nickey0207 3 роки тому +1

    Damn, your hair is PERFECT!

  • @Steven-tw7iz
    @Steven-tw7iz 7 років тому

    very useful info in this one!

  • @uoweme5grand
    @uoweme5grand 5 років тому +1

    quick question for anyone willing to answer/have the answer:
    const char* name = "Cherno";
    does that mean you don't actually have to provide the char pointer with an address when it comes to string?
    and when he later tries to modify the string, he also did not dereference it.

    • @uoweme5grand
      @uoweme5grand 5 років тому

      @Peterolen Thank you kind sir for your quick and helpful reply.

    • @ContentConsumer90
      @ContentConsumer90 5 років тому

      @Peterolen since name is a pointer variable, shouldn't it print a integer?
      my doubt is how cout

    • @ContentConsumer90
      @ContentConsumer90 5 років тому

      @Peterolen thank you this helped a lot, always had this doubt. CHEERS!

  • @chainonsmanquants1630
    @chainonsmanquants1630 4 роки тому

    Thanks !

  • @ali-4096
    @ali-4096 7 років тому +1

    Can you export your visual studio settings. That would be great. Because I love it!!

    • @johannes1464
      @johannes1464 6 років тому +3

      Check his first video's in this series

  • @Brotcrunsher
    @Brotcrunsher 7 років тому +8

    Wow, that string literal s is interesting. Do you know if it would be somehow possible to code this yourself or is this a pure compiler/language feature which would not have been possible to implement ourselves?

    • @TeeDawl
      @TeeDawl 7 років тому +9

      Its possible. If you're interested, google "operator overloading c++". You can do really cool stuff. Thats what the class does, you can see that when he hovers over the string. foo::operator ""s(...)
      You can overwrite pretty much everything and create really weird and amazing stuff.

    • @Brotcrunsher
      @Brotcrunsher 7 років тому +8

      Oh my! I thought only the basic operators could be overloaded. That's cool!

    • @dekrain
      @dekrain 6 років тому +1

      It's also used in "chrono" module for time literals

  • @mayurkulkarni755
    @mayurkulkarni755 4 роки тому +2

    Thanks for this! This is extremely helpful! Charno ;)

  • @tezza48
    @tezza48 7 років тому +42

    string cherno; is an array of char, no?

    • @ShivamJha00
      @ShivamJha00 6 років тому +2

      Will Terry internally it is (if u talking about std::string)

    • @_slier
      @_slier 4 роки тому +2

      i see what u did there

    • @Brahvim
      @Brahvim 2 роки тому

      Haha, I also had this joke in mind.
      _Sorry not sorry!_ (For him if he feels bad :(
      )

  • @edwinov
    @edwinov 4 місяці тому

    Good episode Charno.

  • @ammgnero
    @ammgnero 4 роки тому

    Thanks mate.

  • @f.r.i.e.n.d.s2368
    @f.r.i.e.n.d.s2368 7 років тому +1

    thanks a lot . if you could make videos on graph that'd be awesome :D

  • @greob
    @greob 7 років тому +81

    Nice!
    You're churning out videos these days, we should call you TheChurno now. ;-)

    • @pradyumnkejriwal3007
      @pradyumnkejriwal3007 7 років тому +3

      Njul it would be pronounced the same

    • @kofer99
      @kofer99 7 років тому +1

      that's the point i think

    • @mrbee8336
      @mrbee8336 5 років тому +2

      Your profile pic tho

    • @LxAU
      @LxAU 4 роки тому

      Love it! Way more witty than all the predictable Charno comments…

    • @tacodiva7729
      @tacodiva7729 3 роки тому

      TheCharno*

  • @CacheTaFace
    @CacheTaFace 4 роки тому

    So... a string is an object of type std::string (which basically a char* bundled up with helper functions), while a string literal is a read only value that can be assigned to string objects? So string literals are not strings, and strings are not necessarily string literals?

  • @soumyakantigiri
    @soumyakantigiri 3 роки тому +1

    Okay, so I didn't understand the last part. When I tried to do it with memory open, we can see that the value changes exactly where it was so is it like it makes a copy changes the value and re-assigns the literal in the same location? I didn't get it

  • @ssuriset
    @ssuriset 5 років тому

    THIS IS EXACTLY WHAT I NEEDED!! THIS GUY IS A FUCKIN GOD!!!

  • @MrRiceKrispyNotTaken
    @MrRiceKrispyNotTaken Рік тому +1

    why i can't use
    char* name = "Che\0rno";
    name[2] = 'A';
    on new versions of visual studio? i get this expression must be a modifiable lvalue

  • @matthewperiut7508
    @matthewperiut7508 5 років тому +2

    You scroll down to say something about charno but you see everyone else already has lmao

  • @minyeongjeong
    @minyeongjeong 7 років тому

    great video

  • @tanweerashif
    @tanweerashif 5 років тому +1

    Which IDE are you using? Most IDEs don't let you see the things happening behind the scene other than the compilation error log.

  • @Bereseker
    @Bereseker Місяць тому

    ohh 7:40
    const HWND name = L"Sigmo";
    const wchar_t** ptr = &name;

    std::cout

  • @xrafter
    @xrafter 4 роки тому

    But char is signed integer why you give it a unsigned prefix?

  • @myriadtechrepair1191
    @myriadtechrepair1191 6 років тому +2

    Using Visual Studio 2017 Enterprise the non-const char* name = "String"; does return an error. Maybe they heard you or maybe enterprise operates differently. I got enterprise from my school so I decided why not use it.
    error C2440: 'initializing': cannot convert from 'const char [8]' to 'char *'

    • @vertigo6982
      @vertigo6982 6 років тому

      The knee... sweep it.

    • @Lmao-ke9lq
      @Lmao-ke9lq 5 років тому

      im using visual studio 2019 community and i cant make non cost char* name = "string"; too. so its not caused by enterprise version of VS

  • @spacetime_wanderer
    @spacetime_wanderer 5 років тому

    It beats me - why am I getting :A value of type "const char * " cannot be used to initialize an entity of type "char *", when doing 'char* var1 = "Hello"; ' I am using Visual Studio 2017. According to Cherno, VS allows this, and he isn't getting error. But I am. What could be wrong?

  • @Katniss218
    @Katniss218 4 роки тому +3

    Hi Charno xd

  • @edwinov
    @edwinov 4 місяці тому

    And what about CString ?

  • @h.hristov
    @h.hristov 7 років тому

    I have 2 questions. If you could answer any of them, I'd be grateful!
    1. If you define the same string literal twice, for ex. const char* name1 = "Cherno"; const char* name2 = "Cherno";, does the compiler notice it and create only one instance of "Cherno" into the read-only part of the executable in order to save space? Therefore making name1 and name2 point to the same memory location where "Cherno" is.
    2. If I call a function with the prototype void test(char* arg); and pass in a string, for ex. calling test("Cherno is good");, is the string literal "Cherno is good" put into the read-only memory during compilation? So when you call that function, a char array is created on the stack and is initialized with the string literal "Cherno is good" which ion its own is in RO, and then that array is passed as the argument to the function. The function handles it as a char pointer, therefore allowing us to modify the contents of the array.

    • @julien-scholz
      @julien-scholz 7 років тому +1

      @Lightslinger Deadeye
      2. Nah I don't think so, the string literal is constant, and passing it as a pointer to a function doesn't change that. The pointer just points to the constant part of the memory.

    • @elgs1980
      @elgs1980 6 років тому +2

      #include
      int main(int argc, char const* argv[]) {
      char* a = "Cherno";
      char* b = "Cherno";
      char* c = "Charno";
      printf("%p
      ", a);
      printf("%p
      ", b);
      printf("%p
      ", c);
      return 0;
      }
      Try run this code. I got:
      0x55fbf81f1004
      0x55fbf81f1004
      0x55fbf81f100f
      Hope this should answer your first question.

  • @higiniofuentes2551
    @higiniofuentes2551 Рік тому

    And if we add the code page how it will be added in a string with more than one type of code page?

  • @LameDuckStudios
    @LameDuckStudios 2 роки тому

    I can't seem to run any of this with char* name = "cherno"; I get "initializing: cannot convert from const char [7] to char*"
    I also can't run this if I insert the backslash 0 into the string. "che\0rno". I get "name array bound overflow" for that one.
    I'm in MSVC 2019.

  • @SebastianHasch
    @SebastianHasch 3 роки тому

    Love your videos! super useful and informative, Thanks mister* Charno :)

  • @DanielLiljeberg
    @DanielLiljeberg 6 років тому +3

    Charno

  • @harryf1ashman
    @harryf1ashman 5 років тому

    very good

  • @yogeshdevaggarwal
    @yogeshdevaggarwal 4 роки тому

    The Charno