(2)string and related classes in c++ STL
string class is a portable class.it can be used in many platforms,such as windows,linux,unix,etc!
it encapsulates string semantic and provides many useful member fuctions !
when we use it, don't worry memory overflow,beause it can allocate memory space itself.
In STL,it is defined in header <string> and std namespace.so if you use it, you will add
#include <string> and
using std::string;or
using std::namespace or
in programe use
std::string define string.
for example:
#include <string>
#include <iostream>
int main()
{
std::string str;
std::cin>>str;
std::cout<<"your input:"<<str<<std::endl;
}
member funtions in string is very useful.
I won't discuss it in detail,for many good books do it!
Although string class isn't a container class,it provides similar interfaces,such as begin(),end().
so you can use it like a container class so it can agree with many generic algorithm in header <algorithm> .
for example:
string str1( "Alpha Beta Gamma Delta" );
string::size_type loc = str1.find( "Omega", 0 );
if( loc != string::npos ) {
cout << "Found Omega at " << loc << endl;
} else {
cout << "Didn't find Omega" << endl;
}
or
string str1( "Alpha Beta Gamma Delta" );
string::const_iterator loc = find( str1.begin(),str1.end(),"Omega");
if( loc != str1.end() ) {
cout << "Found Omega at " << loc << endl;
} else {
cout << "Didn't find Omega" << endl;
}
and so on!
some useful associated classes are introduced here.
they are defined in header <sstream>:
stringstream - allows input and output
istringstream - allows input only
ostringstream - allows output only
An ostringstream object can be used to write to a string. This is similar to the C sprintf() function. For example:
ostringstream s1;
int i = 22;
s1 << "Hello " << i << endl;
string s2 = s1.str();
cout << s2;
An istringstream object can be used to read from a string. This is similar to the C sscanf() function. For example:
istringstream stream1;
string string1 = "25";
stream1.str(string1);
int i;
stream1 >> i;
cout << i << endl; // displays 25
You can also specify the input string in the istringstream constructor as in this example:
string string1 = "25";
istringstream stream1(string1);
int i;
stream1 >> i;
cout << i << endl; // displays 25
A stringstream object can be used for both input and output to a string like an fstream object.
when you are familar with these classes,you are able to handle with string-related problem!