c++ primer中的练习题4.34出错.

c++ primer中的习题4.34出错..
问题:

习题4.34
编写程序读入一组string 类型的数据,并将它们存储在vector 中。接着,把
该vector 对象复制给一个字符指针数组。为vector 中的每个元素创建一个新
的字符数组,并把该vector 元素的数据复制到相应的字符数组中,最后把指向
该数组的指针插入字符指针数组。

程序:

#include <iostream>
#include "hs.h"
#include <vector>
#include <string>
using namespace std;
int main()
{
string sr;//声明变量 输入
vector<string> rq; // 创建字符型的vector
size_t js = 1;//计算for循环的次数

while(cin >> sr)
{
rq.push_back(sr);
}
char **sz =new char*[rq.size()];//char **sz是定义了一个char*类型的指针*sz; new char*是定义了rq.size个的char*类型的元素

for (vector<string>::iterator i = rq.begin();i != rq.end();js++ ,i++)
{
char *sz_for = new char[(*i).size()+1];// 创建字符数组
strcpy(sz_for,(*i).c_str());// 复制vector 元素的数据到字符数组 c_str()的作用是将string转换为char*可读不可写
sz[js] = sz_for;// 将字符数组给字符指针数组
}

for (size_t ix = 0; ix != rq.size();++ix) // 释放各个字符数组
{
delete [] sz[ix];
}
delete [] sz;// 释放字符指针数组

system("pause");
return 0;
}

不知道为什么输入数值之后..一回车就报错.


------解决方案--------------------
js=1 时出现下标越界错误