Library string Type

时间:2022-03-22 15:46:51

The string type supports variable-length character strings.The library takes cares of managing memory associated with storing the characters and provides various useful operations.The library string type is intended to be efficient enough for general use.

To use string,we need to include the header of string:

#include<string>
using std::string;

Another more efficient way to include the string header is:

#include<cstring> //The c indicates that the header originally comes from the C library

Defining and Initializing strings

  • string s1; Default constructors;s1 is the empty string
  • string s2(s1); Initialize s2 as a copy of s1
  • string s3(“value”); Initialize s3 as a copy of the string literal
  • string s4(n,”c”); Initialize s4 with n copies of the character ‘c’

Reading and Writing strings

Here is a simple example:

#include<iostream>
#include<string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
/*
*All of the things above could be replaced by
*#include<iostream>
*#include<cstring>
*using namespace std;
*/
int main()
{
string s;//empty string
cin>>s;//read whitespace-separatedstring to s
cout<<s<<endl;//write s to the output
return 0;
}

This program begins by defaulting a string named s.The next line,

cin>>s;

reads the standard input storing what is read into s.The string input operator:

  • Reads and discards any leading whitespace(e.g.spaces,newlines,tabs)
  • It then reads characters until the next white whitespace character is encountered.

So,if the input to the program is ” Hello World! “,(note leading and trailing spaces) then the output will be “Hello” with no extra spaces.

#include<iostream>
#include<string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
int main()
{
string s1,s2;
cin>>s1>>s2; //s1 gets "hello" and s2 gets "world!"
cout<<s1<<s2<<endl;
return 0;
}

If we give this version of the program the same input as in the previous paragraph,our output would be

HelloWorld!

Reading an Unknown Number of Strings

//Note:#include and using declarations must be added to compile this code
int main()
{
string word;
while(cin>>word)
cout<<word<<endl;
return 0;
}

For example,if we input “Welcome to Github!”,then we get

Welcome
to
Github!

In this case,we read into a string using the input operation.The operator returns the istream from which it reads,and the while condition tests the stream after the read completes.If the stream is valid—it hasn’t hit end-of-file or encounter an invalid input—then the body of the while is excuted and the value we read is printed to the standard output.Once we hit end-of-file,we fall out of while.

Using getline to Read an Entire Line

There is an addtional useful string IO operation:getline.The getline function reads the next line of input from the stream and stores what what it read,not including the new line,in its string argument.Whenever getline encounter a new line,even if it’s the first character in the input,it stops reading the input and returns.

int main()
{
string line;
while(getline(cin,line))
cout<<line<<endl;
return 0;
}

For example,if our input is “Welcome to Github!”,then we get

Welcome to Github!

If our input is:

Welcome to Github!
New bee!

then we still get

Welcome to Github!

//第一次全英文,敲得我好累。这篇博客就当是试水吧。要是太花时间,以后就不这么写了…
//ps:感觉有道云笔记的markdown排版更好看啊,是错觉么。。。