0% found this document useful (0 votes)
85 views2 pages

Strings and Null-Terminated Character Sequences

This document discusses strings and null-terminated character sequences (NTCS) in C and C++. It notes that NTCS using character arrays are commonly used to represent strings in C, while C++ introduces a string class. However, NTCS remain important as string literals produce NTCS. The document provides an example showing NTCS and strings can be used interchangeably with input/output streams. It highlights that arrays have a fixed size while strings are dynamic. Finally, it notes NTCS can be converted to strings and vice versa using functions like c_str().

Uploaded by

icul1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
85 views2 pages

Strings and Null-Terminated Character Sequences

This document discusses strings and null-terminated character sequences (NTCS) in C and C++. It notes that NTCS using character arrays are commonly used to represent strings in C, while C++ introduces a string class. However, NTCS remain important as string literals produce NTCS. The document provides an example showing NTCS and strings can be used interchangeably with input/output streams. It highlights that arrays have a fixed size while strings are dynamic. Finally, it notes NTCS can be converted to strings and vice versa using functions like c_str().

Uploaded by

icul1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 2

Strings and null-terminated character sequences

Plain arrays with null-terminated sequences of characters are the typical types used in the C
language to represent strings (that is why they are also known as C-strings). In C++, even though
the standard library defines a specific type for strings (class string), still, plain arrays with null-
terminated sequences of characters (C-strings) are a natural way of representing strings in the
language; in fact, string literals still always produce null-terminated character sequences, and
not string objects.

In the standard library, both representations for strings (C-strings and library strings) coexist, and
most functions requiring strings are overloaded to support both.

For example, cin and cout support null-terminated sequences directly, allowing them to be
directly extracted fromcin or inserted into cout, just like strings. For example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// strings and NTCS:
#include <iostream>
#include <string>
using namespace std;

int main ()
{
char question1[] = "What is your name? ";
string question2 = "Where do you live? ";
char answer1 [80];
string answer2;
cout << question1;
cin >> answer1;
cout << question2;
cin >> answer2;
cout << "Hello, " << answer1;
cout << " from " << answer2 << "!\n";
return 0;
}
What is your name? Homer
Where do you live? Greece
Hello, Homer from Greece!


In this example, both arrays of characters using null-terminated sequences and strings are used.
They are quite interchangeable in their use together with cin and cout, but there is a notable
difference in their declarations: arrays have a fixed size that needs to be specified either implicit
or explicitly when declared; question1 has a size of exactly 20 characters (including the
terminating null-characters) and answer1 has a size of 80 characters; while strings are simply
strings, no size is specified. This is due to the fact that strings have a dynamic size determined
during runtime, while the size of arrays is determined on compilation, before the program runs.

In any case, null-terminated character sequences and arrays are easily transformed from one
another:

Null-terminated character sequences can be transformed into strings implicitly, and strings can
be transformed into null-terminated character sequences by using either of string's member
functions c_str or data:
1
2
3
4
char myntcs[] = "some text";
string mystring = myntcs; // convert c-string to string
cout << mystring; // printed as a library string
cout << mystring.c_str(); // printed as a c-string


(note: both c_str and data members of string are equivalent)

You might also like