📄 linux tutorial - c++ string class tutorial.mht
字号:
<TABLE cellSpacing=3D1 cellPadding=3D4 width=3D"100%" =
bgColor=3D#000000=20
border=3D1>
<TBODY>
<TR bgColor=3D#c0c0c0>
<TD><PRE>#include <string>
#include <iostream>
using namespace std;
// Helper routine ps to print a string class variable.
void ps(string& s){ cout << s << endl; }
int main()
{
string a("String A");
string b;
b =3D "String B";
cout << "Hello!" << endl;
}
</PRE></TD></TR></TBODY></TABLE></DD></DL>
<P>Compile program with symbolic code for the debugger: <TT>g++ -g =
testprog.cpp</TT>=20
<P>Start <TT>gdb</TT> debugger: <TT>gdb ./a.out</TT>=20
<DL>
<DD>
<TABLE cellSpacing=3D1 cellPadding=3D4 width=3D"100%" =
bgColor=3D#000000=20
border=3D1>
<TBODY>
<TR bgColor=3D#c0c0c0>
<TD><PRE>(gdb) l 1,18 <B><I>- =
List lines 1 to 18</I></B>
1 #include <string>
2 #include <iostream>
3
4 using namespace std;
5
6 // Helper routine ps to print a string class variable.
7
8 void ps(string& s){ cout << s << endl; }
9
10 int main()
11 {
12 string a("String A");
13 string b;
14
15 b =3D "String B";
16
17 cout << "Hello!" << endl;
18 }
(gdb) break 17
Breakpoint 1 at 0x804893b: file testprog.cpp, line 17.
(gdb) run
Starting program: /home/user1/a.out
Breakpoint 1, main () at testprog.cpp:17
17 cout << "Hello!" << endl;
(gdb) p a <B><I>- Gdb can't de-reference =
string class variable "a" </I></B>
$1 =3D {static npos =3D Cannot access memory at address 0x83a32d0
(gdb) call ps(a)
String A <B><I>- Call helper function ps =
to print string conents.</I></B>
(gdb) call ps(b)
String B
(gdb) c
Continuing.
Hello!
Program exited normally.
(gdb) quit
</PRE></TD></TR></TBODY></TABLE></DD></DL>With newer versions of =
gdb,=20
one may use built-in string class functions:=20
<DL>
<DD>
<TABLE cellSpacing=3D1 cellPadding=3D4 width=3D"100%" =
bgColor=3D#000000=20
border=3D1>
<TBODY>
<TR bgColor=3D#c0c0c0>
<TD><PRE>(gdb) p a.c_str()
$1 =3D 0x8049e34 "String A"
(gdb) p b.c_str()
$3 =3D 0x8049e4c "String B"
(gdb) p b.empty()
$2 =3D false
(gdb) p b.size()
$4 =3D 8
</PRE></TD></TR></TBODY></TABLE></DD></DL>
<P>
<HR SIZE=3D5>
<TABLE cellSpacing=3D0 cellPadding=3D2 width=3D"100%" border=3D0>
<TBODY>
<TR bgColor=3D#ffcc33>
<TD><B><BIG>Tips:</BIG></B></TD></TR></TBODY></TABLE>
<P>
<UL>
<LI>The string class is NOT a native data type, it is an object =
class=20
and thus can not be handled like the traditional pointer to =
variable in=20
gdb.=20
<LI>One can pass strings by reference (i.e. argument =
declarations using=20
<TT>(string& <I>variable-name</I> )</TT>), by value =
<TT>(string=20
<I>variable-name</I> )</TT>, and by pointer <TT>(string=20
*<I>variable-name</I> )</TT>.=20
<LI>When using a reference, one may mimic the protection of a =
variable=20
that passing by value enables by using <TT>(const string&=20
<I>variable-name</I> )</TT> </LI></UL>
<P>
<HR SIZE=3D5>
<TABLE cellSpacing=3D0 cellPadding=3D2 width=3D"100%" border=3D0>
<TBODY>
<TR bgColor=3D#ffcc33>
=
<TD><B><BIG>Links/Information:</BIG></B></TD></TR></TBODY></TABLE>
<P>
<UL>
<LI><A =
href=3D"http://www.math.utah.edu/docs/info/libg++_19.html">GNU C++=20
Library: String classes</A>=20
<LI><A=20
=
href=3D"http://www.yolinux.com/TUTORIALS/src/AIX-IStringTestCode.cpp">IBM=
=20
AIX IString class example</A>=20
<LI><A =
href=3D"http://www.sgi.com/tech/stl/basic_string.html">STL:=20
basic_string</A> - SGI STL home=20
<LI><A=20
=
href=3D"http://www.yolinux.com/TUTORIALS/LinuxTutorialC++.html">YoLinux.c=
om:=20
C++</A> </LI></UL>
<P>
<HR SIZE=3D5>
<TABLE cellSpacing=3D0 cellPadding=3D2 width=3D"100%" border=3D0>
<TBODY>
<TR bgColor=3D#ffcc33>
<TD vAlign=3Dtop><IMG=20
=
src=3D"http://www.yolinux.com/TUTORIALS/images/book40.gif"><B><BIG>=20
Books:</BIG></B></TD></TR></TBODY></TABLE>
<P>
<DL>
<DD>
<TABLE border=3D1 celpadding=3D"5">
<TBODY>
<TR>
<TD><IMG=20
=
src=3D"http://www.yolinux.com/BOOKS/0201379260.01.MZZZZZZZ.jpg"></TD>
<TD vAlign=3Dtop>The C++ Standard Library: A Tutorial =
Reference=20
<BR>Nicolai M. Josuttis <BR>ISBN #0201379260, Addison =
Wesley=20
Longman=20
<P>This book is the only book I have seen which covers =
string=20
classes as implemented by current Linux distributions. It =
offers=20
extensive coverage of the C++ string classes as well as =
fairly=20
complete coverage of the C++ Standard Template Library =
(STL).=20
</P></TD>
<TD vAlign=3Dtop><A=20
=
href=3D"http://www.amazon.com/exec/obidos/ASIN/0201379260/yolinux-20"><IM=
G=20
alt=3DAmazon.com=20
=
src=3D"http://www.yolinux.com/TUTORIALS/images/Amazon-BuyABook88x31.gif">=
</A>=20
<BR><IMG height=3D1=20
=
src=3D"http://service.bfast.com/bfast/serve?bfmid=3D2181&sourceid=3D3=
9358384&bfpid=3D0201379260&bfmtype=3Dbook"=20
width=3D1 border=3D0 NOSAVE><A=20
=
href=3D"http://service.bfast.com/bfast/click?bfmid=3D2181&sourceid=3D=
39358384&bfpid=3D0201379260&bfmtype=3Dbook"=20
target=3D_top><IMG height=3D60=20
=
src=3D"http://www.yolinux.com/TUTORIALS/images/BarnesNobles.gif"=20
width=3D75></A> </TD></TR>
<TR>
<TD><IMG=20
=
src=3D"http://www.yolinux.com/BOOKS/0131857576.01.MZZZZZZZ.jpg"></TD>
<TD vAlign=3Dtop>C++ How to Program <BR>by Harvey M. Deitel, =
Paul J.=20
Deitel <BR>ISBN #0131857576, Prentice Hall=20
<P>Fifth edition. The first edition of this book (and =
Proffessor=20
Sheely at UTA) taught me to program C++. It is complete =
and covers=20
all the nuances of the C++ language. It also has good code =
examples. Good for both learning and reference. </P>
<TD vAlign=3Dtop><A=20
=
href=3D"http://www.amazon.com/exec/obidos/ASIN/0131857576/yolinux-20"><IM=
G=20
alt=3DAmazon.com=20
=
src=3D"http://www.yolinux.com/TUTORIALS/images/Amazon-BuyABook88x31.gif">=
</A>=20
<BR><IMG height=3D1=20
=
src=3D"http://service.bfast.com/bfast/serve?bfmid=3D2181&sourceid=3D3=
9358384&bfpid=3D0131857576&bfmtype=3Dbook"=20
width=3D1 border=3D0 NOSAVE><A=20
=
href=3D"http://service.bfast.com/bfast/click?bfmid=3D2181&sourceid=3D=
39358384&bfpid=3D0131857576&bfmtype=3Dbook"=20
target=3D_top><IMG height=3D60=20
=
src=3D"http://www.yolinux.com/TUTORIALS/images/BarnesNobles.gif"=20
width=3D75></A> =
</TD></TR></TBODY></TABLE></DD></DL></TD></TR></TBODY></TABLE>
<P>
<TABLE>
<TBODY>
<TR>
<TD vAlign=3Dtop width=3D"60%">Return to <A=20
href=3D"http://yolinux.com/">http://yolinux.com/</A> <BR>Return to =
<A=20
href=3D"http://www.yolinux.com/TUTORIALS/index.html">YoLinux =
Tutorial=20
Index</A> <BR><A=20
href=3D"http://www.yolinux.com/YoLinuxEmailForm.html">Feedback =
Form</A>=20
<P><SMALL>Copyright =C2=A9 2001, 2002, 2003, 2005 by <I>Greg=20
Ippolito</I></SMALL> </P></TD>
<TD vAlign=3Dtop align=3Dright><!-- BEGIN CODE -->
<SCRIPT type=3Dtext/javascript><!--=0A=
google_ad_client =3D "pub-8567479315106986";=0A=
google_ad_width =3D 468;=0A=
google_ad_height =3D 60;=0A=
google_ad_format =3D "468x60_as";=0A=
google_ad_channel =3D"";=0A=
google_ad_type =3D "text_image";=0A=
google_color_border =3D ["336699","000000","DFF2FD","6699CC"];=0A=
google_color_bg =3D ["FFFFFF","F0F0F0","DFF2FD","003366"];=0A=
google_color_link =3D ["0000FF","0000FF","0000CC","FFFFFF"];=0A=
google_color_url =3D ["008000","008000","008000","AECCEB"];=0A=
google_color_text =3D ["000000","000000","000000","AECCEB"];=0A=
//--></SCRIPT>
<SCRIPT =
src=3D"http://pagead2.googlesyndication.com/pagead/show_ads.js"=20
type=3Dtext/javascript>=0A=
</SCRIPT>
<!-- END CODE --></TD></TR></TBODY></TABLE>
<P></P></BODY></HTML>
------=_NextPart_000_014D_01C776A8.A5A86B90
Content-Type: image/gif
Content-Transfer-Encoding: base64
Content-Location: http://www.yolinux.com/TUTORIALS/images/book40.gif
R0lGODlhKwAtANX/AP//mf/Mmf+ZmczM/8DAwMzMmcyZ/8yZmcyZZsyZM5nMzJnMmZnMZpmZ/5mZ
zJmZmZmZZpmZM5lmzJlmmZlmZplmM5kzM2bMZmaZzGaZmWaZZmaZM2ZmzGZmmWZmZmZmM2ZmAGYz
ZmYzM2YzADOZZjOZMzNmmTNmZjNmMzMzZjMzMzMzADMAAAAzMwAzAAAAMwAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAAQALAAAAAArAC0AQAb/QIJw
SCwahw/V48g8PjyeTgqGgrlUn09V5VEtvuCFx4VSNZGeQWMt6VxR8DJV0/0+PtjKR6Ties4PHWpr
Ex1eCxqJKB8ICBUiIlmNk5OPgIJrDQ4dLYiJGpIUeiKPHignqKmof2dHXX2wjhUVIxUuMBkZJyon
ubowqFytRVBJiaYUEAUADB5WKBplww4qKSodDw8hKA+fiSrQGi5h5NHDgYMNGB1UKFCmMCt8ERB4
Kx8BAQKVIke8KCkeGMi0qZM3DyJkQdKDgEIZFC14ofpwxkMKB2s4dDjh6dMIWY8qrDilSkWLXr5y
wYAxrCWTLktcnlNBpg+rIV1kEkkCg4uG/z4iIAj90GKFhy/gFLloCQUGCxUbIBxd0O0btBKHyNkx
0+pJujYwPmh4QFXDnJ9aEcE6h4mNoY6K3KF48UFPllcfIDgKcSmdRhXRYKl4qmIFjEgVKFGydESB
hxVtG3R4622PwlqMKFEAtzImsT4Z/FL+dILRrD0V+rQ4qSpVE3SZ/sLVkHCWyEenJLaG4bmlhtm1
R+nhZVJFSl8qgO3SiRPWTQJJuOQ62ecA89fgXDy/PtODWbErVEB48mopd+hTYCjCIjRCmeTe1zMn
n+I9FaH1bv0O0ydwS2opdNCFNXjAQZN6GmCVFlW3nBOgBwVIBc4F3vwETR0L/sSWGhp1YP9CCrPB
kWBWWmnYVWTrUGFKHEkpGAZCQWmxYSbreOFBad6JWAI0eMwiAgoRrvRjX7Gx85s3ZbiwAgVZSBgW
BPo4ggKRhLDDBTQkfLBSeIUdlo9ijpxApTqjfZJYI7NYkBmYFUz5WmSyHWQaLR+oCaYjH2wnRGEb
hVakFxUyAkEFIJCSUCOv7CKREbxkcE06kwH6yQbBfVCLCOGlEFFrfL0EZ5mJJJTAI7UYpVtrFDEB
W0ag/iTLCKQYlUJrqeiJhArpbCLpJyrIYmkppwbTwo02ZVPEA9ZYw8Vsvdq2QiknzAqRccedcJKt
RHThzQbNzvIsHxn0dNx01HHV0gJDqGAVWwU9ZdOoLoLt0kJv5722i7XCFBEEADs=
------=_NextPart_000_014D_01C776A8.A5A86B90
Content-Type: image/jpeg
Content-Transfer-Encoding: base64
Content-Location: http://www.yolinux.com/BOOKS/0201379260.01.MZZZZZZZ.jpg
/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEP
ERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4e
Hh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCACMAG8DASIA
AhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQA
AAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3
ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWm
p6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEA
AwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSEx
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -