当前位置:   article > 正文

C ++ Primer Plus 第六版 第九章编程练习答案_编写一个程序 使用定位new运算符将一个包含两个

编写一个程序 使用定位new运算符将一个包含两个

2.修改程序清单9.9,用string对象代替字符数组。这样,该程序将不再需要检查输入的字符串是否过长,同时可以将输入字符串同字符串""进行比较,以判断是否为空行。 

  1. #include <iostream>
  2. using namespace std;
  3. void strcount ( const string str )
  4. {
  5. static int total = 0;
  6. int count = 0, i = 0;
  7. cout << "\"" << str << "\" contains ";
  8. while ( str[i] )
  9. {
  10. if ( str[i] == ' ' )
  11. i++;
  12. else
  13. {
  14. count++;
  15. i++;
  16. }
  17. }
  18. total += count;
  19. cout << count << " characters" << endl;
  20. cout << total << " characters total" << endl;
  21. }
  22. int main()
  23. {
  24. string str;
  25. cout << "Enter a line:\n";
  26. while ( getline ( cin, str ) )
  27. {
  28. if ( str == "" ) break;
  29. strcount ( str );
  30. cout << "Enter next line:\n";
  31. }
  32. cout << "Bye\n";
  33. return 0;
  34. }


3.下面是一个结构声明:
struct chaff
{
char dross[20];
int flag;
};
编写一个程序,使用定位new运算符将一个包含两个这样的结构的数组放在一个缓冲区中。然后,给结构的成员赋值(对于char数组,使用函数strcpy()),并使用一个循环来显示内容。一种方法是像程序清单9.10那样将一个静态数组用作缓冲区;另一种方法是使用常规new运算符来分配缓冲区。

  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4. const int ArSize = 100;
  5. struct chaff
  6. {
  7. char dross[20];
  8. int slag;
  9. };
  10. char buffer[ArSize];
  11. int main()
  12. {
  13. chaff ch,*p1;
  14. char *str=new char[ArSize];
  15. while ( cin >> str >> ch.slag )
  16. {
  17. strcpy ( ch.dross, str );
  18. p1=new(buffer) chaff;
  19. *p1=ch;
  20. cout << "dross : " << p1->dross << endl;
  21. cout << "slag : " << p1->slag << endl;
  22. }
  23. delete []str;
  24. return 0;
  25. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/178283
推荐阅读
相关标签
  

闽ICP备14008679号