str_assignOps.cpp
上传用户:qdkongtiao
上传日期:2022-06-29
资源大小:356k
文件大小:4k
源码类别:

书籍源码

开发平台:

Visual C++

  1. /*
  2.  * This file contains code from "C++ Primer, Fourth Edition", by Stanley B.
  3.  * Lippman, Jose Lajoie, and Barbara E. Moo, and is covered under the
  4.  * copyright and warranty notices given in that book:
  5.  * 
  6.  * "Copyright (c) 2005 by Objectwrite, Inc., Jose Lajoie, and Barbara E. Moo."
  7.  * 
  8.  * 
  9.  * "The authors and publisher have taken care in the preparation of this book,
  10.  * but make no expressed or implied warranty of any kind and assume no
  11.  * responsibility for errors or omissions. No liability is assumed for
  12.  * incidental or consequential damages in connection with or arising out of the
  13.  * use of the information or programs contained herein."
  14.  * 
  15.  * Permission is granted for this code to be used for educational purposes in
  16.  * association with the book, given proper citation if and when posted or
  17.  * reproduced.Any commercial use of this code requires the explicit written
  18.  * permission of the publisher, Addison-Wesley Professional, a division of
  19.  * Pearson Education, Inc. Send your request for permission, stating clearly
  20.  * what code you would like to use, and in what specific way, to the following
  21.  * address: 
  22.  * 
  23.  *  Pearson Education, Inc.
  24.  *  Rights and Contracts Department
  25.  *  75 Arlington Street, Suite 300
  26.  *  Boston, MA 02216
  27.  *  Fax: (617) 848-7047
  28. */ 
  29. #include "seq_preamble.h"
  30. vector<char> c_vec;
  31. //string s("some string"), s2("some other string");
  32. string s, s2;
  33. int main() 
  34. {
  35.     s = "some string";
  36.     s2 = "some other string";
  37.     // 3 equivalent ways to insert all the characters from s2 at beginning of s
  38.     // insert iterator range before s.begin()
  39.     s.insert(s.begin(), s2.begin(), s2.end());  
  40.     cout << "insert iterators version:        " << s << endl;
  41.     s = "some string";
  42.     // insert copy of s2 before position 0 in s
  43.     s.insert(0, s2);                  
  44.     cout << "insert string at given position: " << s << endl;
  45.     s = "some string";
  46.     // insert s2.size() characters from s2 starting at s2[0] before s[0]
  47.     s.insert(0, s2, 0, s2.size());   
  48.     cout << "insert positional version:       " << s << endl;
  49.     s = "";
  50.     c_vec.push_back('a');   // temporary hack to workaround g++ bug
  51.     // replace characters in s by elements from c_vec
  52.     s.insert(s.begin(), c_vec.begin(), c_vec.end());  
  53.     s.insert(s.size(), 5, '!'); // insert five exclamation points at end of s
  54.     cout << s << endl;
  55.     s.erase(s.size() - 5, 5);  // erase last five characters from s
  56.     cout << s << endl;
  57. {
  58.     char *cp = "Stately plump Buck";
  59.     string s;
  60.     s.assign(cp, 7);            // s == "Stately"
  61.     cout << s << endl;
  62.     s.insert(s.size(), cp + 7); // s == "Stately plump Buck"
  63.     cout << s << endl;
  64. }
  65. {
  66.     string s("C++ Primer");         // initialize s to "C++ Primer"
  67.     s.append(" 3rd Ed.");           // s == "C++ Primer 3rd Ed."
  68.     // equivalent to s.append(" 3rd Ed.")
  69.     s.insert(s.size(), " 3rd Ed."); 
  70.     cout << s << endl;
  71.     // starting at position 11, erase 3 characters and then insert "4th"
  72.     s.replace(11, 3, "4th");        // s == "C++ Primer 4th Ed."
  73.     cout << s << endl;
  74.     // equivalent way to replace "3rd" by "4th"
  75.     s.erase(11, 3);                 // s == "C++ Primer Ed."
  76.     s.insert(11, "4th");            // s == "C++ Primer 4th Ed."
  77.     cout << s << endl;
  78.     s.replace(11, 3, "4th");        // s == "C++ Primer 4th Ed."
  79.     cout << s << endl;
  80.     s.replace(11, 3, "Fourth"); // s == "C++ Primer Fourth Ed."
  81.     cout << s << endl;
  82. {
  83.     string s("C++ Primer, 3rd Ed.");
  84.     s.replace(s.find("3rd"), 3, "Fourth");
  85.     cout << s << endl;
  86. }
  87. }
  88.     return 0;
  89. }