117页习题4.26,从标准输入读入C风格字符串

//为了方便,要包含的文件会不同,但我没有删
#include <iostream>
#include <string>
#include <vector>
#include <bitset>
#include <cstring>   //和C语言的string.h其实是一个版本

using std::bitset;
using std::vector;
using std::cin;
using std::endl;
using std::cout;
using std::string;

//---------------------------------------------------------------------------

    int main()
    {
     //从输入设备读入C风格字符串,这里采用了先以vector存字符,然后跟据字符多少动态建一个char[]数组;
  //在这里面要特别注意指针的引用方法,例如里面的str,把它设为const型,这样可以保证str1所指的永远是第一个字符,所以为了遍历字符串组,又用了
  //指针str1,在for循环中,str1最后已经指到了字符串组的最后一个位置,这时如再加1,就会出现字符串组大小不够的问题,所以在最后加上空字符正好
  vector<char> vc;
  char c='0';
  while(cin>>c)
   vc.push_back(c);

  size_t s=vc.size ();

   char *const str=new char [s+1];

  char *str1=str;
  for(vector<char>::iterator ite=vc.begin ();ite!=vc.end ();++ite,++str1)
   *str1=*ite;
       
  *str1='/0';


  //-------------------------------------------------------------
       
  //输出结果
  cout<<"输入C风格字符串为:";
  for(char *p=str;*p!='/0';++p)
   cout<<*p<<' ';

  cout<<endl;

  //------------------------------释放new分配的空间
  delete [] str;

        return 0;
    }


 /*
     117页习题4.26,从标准输入读入C风格字符串
 */

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值