Skip to main content

string::size_type

string::size_type
It might be logical to expect that size returns an int, or, thinking back to the note on page
38, an unsigned. Instead, the size operation returns a value of type string::size_type. This
type requires a bit of explanation.
The string classand many other library typesdefines several companion types. These
companion types make it possible to use the library types in a machine-independent
manner. The type size_type is one of these companion types. It is defined as a synonym
for an unsigned typeeither unsigned int or unsigned longthat is guaranteed to be big
enough to hold the size of any string. To use the size_type defined by string, we use the
scope operator to say that the name size_type is defined in the string class.
Any variable used to store the result from the string size operation ought
to be of type string::size_type. It is particularly important not to assign
the return from size to an int.
Although we don't know the precise type of string::size_type, wedo know that it is an
unsigned type (Section 2.1.1, p. 34). We also know that for a given type, the unsigned
version can hold a positive value twice as large as the corresponding signed type can hold.
This fact implies that the largest string could be twice as large as the size an int can hold.
Another problem with using an int is that on some machines the size of an int is too small
to hold the size of even plausibly large strings. For example, if a machine has 16-bit ints,
then the largest string an int could represent would have 32,767 characters. A string that
held the contents of a file could easily exceed this size. The safest way to hold the size of
a string is to use the type the library defines for this purpose, which is string::size_type.

Comments

Popular posts from this blog

CKA Simulator Kubernetes 1.22

  https://killer.sh Pre Setup Once you've gained access to your terminal it might be wise to spend ~1 minute to setup your environment. You could set these: alias k = kubectl                         # will already be pre-configured export do = "--dry-run=client -o yaml"     # k get pod x $do export now = "--force --grace-period 0"   # k delete pod x $now Vim To make vim use 2 spaces for a tab edit ~/.vimrc to contain: set tabstop=2 set expandtab set shiftwidth=2 More setup suggestions are in the tips section .     Question 1 | Contexts Task weight: 1%   You have access to multiple clusters from your main terminal through kubectl contexts. Write all those context names into /opt/course/1/contexts . Next write a command to display the current context into /opt/course/1/context_default_kubectl.sh , the command should use kubectl . Finally write a second command doing the same thing into ...

OWASP Top 10 Threats and Mitigations Exam - Single Select

Last updated 4 Aug 11 Course Title: OWASP Top 10 Threats and Mitigation Exam Questions - Single Select 1) Which of the following consequences is most likely to occur due to an injection attack? Spoofing Cross-site request forgery Denial of service   Correct Insecure direct object references 2) Your application is created using a language that does not support a clear distinction between code and data. Which vulnerability is most likely to occur in your application? Injection   Correct Insecure direct object references Failure to restrict URL access Insufficient transport layer protection 3) Which of the following scenarios is most likely to cause an injection attack? Unvalidated input is embedded in an instruction stream.   Correct Unvalidated input can be distinguished from valid instructions. A Web application does not validate a client’s access to a resource. A Web action performs an operation on behalf of the user without checkin...