BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #44463同步于 2010/10/4
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

【调试出错】String subscript out of range

dodoro
2010/10/4镜像同步14 回复
程序如下,请高手帮忙看看,谢谢! # include <iostream> # include <string> using namespace std; int main() { cout << "Enter a string to be processed:" << endl; string s1, s2; getline(cin, s1); cout << s1 << endl; string::size_type j = 0; for (string::size_type i = 0; i != s1.size(); i++) { if(ispunct(s1[i])) { s2[j] = s1[i]; j++; } } cout << s2 << endl; return 0; }
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
shenlei机器人#1 · 2010/10/4
s2长度为0,必然out of range了啊...
dodoro机器人#2 · 2010/10/4
哦!!原来是这个原因啊,,我又定义成:string s2[100]; 不会出现错误了,但结果还是不对。。这是为什么呢? 【 在 shenlei 的大作中提到: 】 : s2长度为0,必然out of range了啊...
zzjin机器人#3 · 2010/10/4
你的string s2[100]只是说是定义了100个string的数组吧= =没有解决任何问题吧= =
dodoro机器人#4 · 2010/10/4
哦,,我是菜鸟,见笑了。。 那请问你的意思是。。?赋初值吗? 【 在 zzjin 的大作中提到: 】 : 你的string s2[100]只是说是定义了100个string的数组吧= =没有解决任何问题吧= =
shenlei机器人#5 · 2010/10/5
string s1; getline(cin,s1); string s2(s1.size(),0);//初始化了s1大小的字符串s2 ps 你的愿意是s2是s1的标点的集合? 【 在 dodoro 的大作中提到: 】 : 哦,,我是菜鸟,见笑了。。 : 那请问你的意思是。。?赋初值吗? : 【 在 zzjin 的大作中提到: 】 : ...................
dodoro机器人#6 · 2010/10/5
哦,终于知道了,谢谢! 我的意愿其实是s2是s1除去标点的集合,那句if(ispunct(s1[i]))貌似应该是if(ispunct(s1[i]) == 0)。。。 是C++ Primer的一道练习题,还是菜鸟,多谢啦~~ 【 在 shenlei 的大作中提到: 】 : string s1; : getline(cin,s1); : string s2(s1.size(),0);//初始化了s1大小的字符串s2 : ...................
dodoro机器人#7 · 2010/10/5
我觉得是定义了一个长度为100的字符串呢?请指教! 【 在 zzjin 的大作中提到: 】 : 你的string s2[100]只是说是定义了100个string的数组吧= =没有解决任何问题吧= =
xiecaiji机器人#8 · 2010/10/6
【 在 dodoro 的大作中提到: 】 : 我觉得是定义了一个长度为100的字符串呢?请指教! : 【 在 zzjin 的大作中提到: 】 : : 你的string 定义了s2[100]只是说是定义了100个string的数组吧= =没有解决任何问题吧= : ................... 类比一下,char a[100]是不是定义了一个100个字符长的字符串呢?呵呵。。
xiaolei09机器人#9 · 2010/12/2
void Huffman::count() { for(int i=0;i<10;i++) {temp[(int)cstring-1]++;cstring++;} int k=0; for(int j=0;j<127;j++) if(temp[j]){weight1[k]=temp[j];n++;k++;b[k]=char(j);} } \users\john\documents\visual studio 2008\projects\哈夫曼编解码器\哈夫曼编解码器\huffman.h(104) : error C2440: “类型转换”: 无法从“std::string”转换为“int” 1> 没有可用于执行该转换的用户定义的转换运算符,或者无法调用该运算符 1>c:\users\john\documents\visual studio 2008\projects\哈夫曼编解码器\哈夫曼编解码器\huffman.h(104) : error C2676: 二进制“++”: “std::string”不定义该运算符或到预定义运算符可接收的类型的转换 请问有人能帮个忙吗?如何使用string里字符的ASIIC码值