Exercise 4.31:
编写程序从标准输入设备读入字符串,并把该串存放在字 符数组中。描述你的程序如何处理可变长的输入。提供比 你分配的数组长度长的字符串数据测试你的程序。

        string in_str;
const size_t str_size = ;
char result_size[str_size+]; cout<<"Enter a string<="<<str_size<<"characters"<<endl;
cin>>in_str; size_t len = strlen(in_str.c_str());
if(len > str_size)
{
len = str_size;
cout<<"String is longer than "<<str_size<<"characters and is stored only"<<str_size<<"characters"<<endl;
} strncpy(result_size,in_str.c_str(),len); result_size[len+] = '\0';

Exercise 4.32:
编写程序用 int 型数组初始化 vector 对象。

    const size_t arr_size = ;
int int_arr[arr_size]; cout<<"Enter"<<arr_size<<"Numbers:"<<endl;
for(size_t ix =;ix != arr_size;++ix)
{
cin>>int_arr[ix];
}
vector<int> ivec(int_arr,int_arr+arr_size);

Exercise 4.33:
编写程序把 int 型 vector 复制给 int 型数组。

      vector<int> ivec;
int ival; cout<<"Enter numbers:(Ctrl+z to end)"<<endl;
while(cin>>ival)
{
ivec.push_back(ival);
} int *parr = new int[ivec.size()];
size_t ix = ;
for(vector<int>::iterator iter = ivec.begin();iter != ivec.end();++iter,++ix)
{
parr[ix] = *iter;
}
delete [] parr;

Exercise 4.34:
编写程序读入一组 string 类型的数据,并将它们存储在 vector 中。接着,把该 vector 对象复制给一个字符指 针数组。为 vector 中的每个元素创建一个新的字符数 组,并把该 vector 元素的数据复制到相应的字符数组 中,后把指向该数组的指针插入字符指针数组。
Exercise 4.35:
输出习题 4.34 中建立的 vector 对象和数组的内容。输 出数组后,记得释放字符数组。

vector<string> svec;
string str; cout<<"Enter string:(Ctrl+z to end)"<<endl;
while(cin>>str)
svec.push_back(str); char **parr = new char*[svec.size()]; size_t ix = ;
for(vector<string>::iterator iter = svec.begin();iter != svec.end();++iter,++ix)
{
char *p = new char[(*iter).size()+];
strcpy(p,(*iter).c_str());
parr[ix] = p;
} //输出vector对象的内容
cout<<"Content of vector:"<<endl;
for(vector<string>::iterator iter2 = svec.begin();iter2 != svec.end();++iter2)
cout<<*iter2<<endl;
cout<<"Content of character arrays:"<<endl;
for(ix = ;ix != svec.size();++ix)
cout<<parr[ix]<<endl;
//释放各个字符数组
for(ix=;ix != svec.size();++ix)
delete [] parr;

C++primer 练习4.31-4.35的更多相关文章

  1. ERROR: Error in Log_event::read_log_event(): 'Found invalid event in binary log', data_len: 31, event_type: 35报错处理

    centos7系统MySQL5.7在用mysqlbinlog命令查询binlog日志时刚开始查询即自动终止查询,查了一下该日志有300M,于是仔细看发现有报错,见下图: 在网上查找经验贴http:// ...

  2. STL_算法_填充新值(fill、fill_n、generate、generate_n)

    C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 全部容器适用 fill(b,e,v)             //[b,e)   填充成v fill_n(b,n,v)     ...

  3. 一次修改闭源 Entity Provider 程序集以兼容新 EntityFramework 的过程

    读完本文你会知道,如何在没有源码的情况下,直接修改一个 DLL 以去除 DLL 上的强命名限制,并在该程序集上直接添加你的“友元程序集(一种特殊的 Attribute,将它应用在程序集上,使得程序集内 ...

  4. haproxy windows环境使用

    haproxy下载:http://pan.baidu.com/s/1miEvQUc 测试环境说明: ip地址 作用 开放端口 备注 nbproc 1 daemon defaults mode tcp ...

  5. android初级篇之apk签名key keystore格式转pk8+x509.pem

    转自:http://www.jianshu.com/p/3bd5c68cc44d 常用的android的签名工具有两个即jarsigner 和apksigner.这两种使用的key格式不一样,keys ...

  6. Java 9将采用新的版本字符串格式

             在现有的版本编码格式使用了两年之后,从Java 9开始,Java版本方案将根据业内软件版本编码的最佳实践进行修改.使用或解析Java版本字符串的应用程序开发人员要注意了,因为这种变化 ...

  7. 我是这么给娃娃取名的(使用 node.js )

    依据: 81 命理,需要让五格都为大吉(吉).五格命理请自行谷歌. 我的是单姓复名.姓是固定的. 废话不说,上代码: Array.prototype.contains = function (k) { ...

  8. des (C语言)

    /** * \file des.h * * \brief DES block cipher * * Copyright (C) 2006-2010, Brainspark B.V. * * This ...

  9. CentOS系统配置记录

    1. 挂載 ntfs: 确定已经安装了rpmforge软件库的源.在线安装使用 yum install 命令 含有 rpmforge源. yum install fuse ntfs-3g -y 安装后 ...

  10. 《Linux及安全》实践3.3

    <Linux及安全>实践三 字符集总结与分析 [by lwr] 一.ISO.UCS/UTF.GB系列字符集分析 1.字符集&字符编码 字符集(Charset):是一个系统支持的所有 ...

随机推荐

  1. Wannafly14挑战赛 C(tarjan缩点)题解

    题目:牛客题目链接 思路:这道题有点像这道题 先缩点,缩完之后判断一下整个强连通分量入度是不是0,如果是的话向ans压入该强连通分量最小的那个值.最后排序一下ans输出就行了. 思路一下就想到了,就是 ...

  2. win7下配置IIS

    Internet Information Services(IIS,互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务.最初是Windows NT版本的可选 ...

  3. Perl 获得当前路径

      1.有两种方法:1. use Cwd;my $dir = getcwd;#$dir中即为当前目录的完整路径信息.2. my $dir = $ENV{'PWD'};#ENV是一个散列,用于存放环境变 ...

  4. os.environ() 说明

    我们想要用Python获得一些有关系统的各种信息的时候就不得不想到os的environ,那这里面都具体包含了那些内容呢? 一.简介 对于官方的解释,environ是一个字符串所对应环境的映像对象.这是 ...

  5. shell 循环总结

    #!/bin/bash my_arry=(a b "c","d" abc) echo "-------FOR循环遍历输出数组--------" ...

  6. 字符集(编码)转换_Linux

    ZC: 来自 我的项目 czgj 1.代码: #include <stdio.h> #include <iconv.h> #include <string.h> / ...

  7. 《剑指offer》第三十五题(复杂链表的复制)

    // 面试题35:复杂链表的复制 // 题目:请实现函数ComplexListNode* Clone(ComplexListNode* pHead),复 // 制一个复杂链表.在复杂链表中,每个结点除 ...

  8. 【Python】Http Post请求四种请求体的Python实现

    前言 前几天一个刚接触Python不深的朋友问我的Python的xml格式Post请求怎么发送,刚好最近也在学习Http请求相关的内容,所以决定总结一下各类Post请求的Python实现. Happy ...

  9. Qt与FFmpeg联合开发指南(一)——解码(1):功能实现

    前言:对于从未接触过音视频编解码的同学来说,使用FFmpeg的学习曲线恐怕略显陡峭.本人由于工作需要,正好需要在项目中使用.因此特地将开发过程总结下来.只当提供给有兴趣的同学参考和学习. 由于FFmp ...

  10. vsftpd配置手册(实用)

    作者: 木頭    来源: PHPChina 开源社区门户1.vsftpd配置参数详细整理 #接受匿名用户 anonymous_enable=YES #匿名用户login时不询问口令 no_anon_ ...