注册 登录
编程论坛 C++教室

简单的小程序, 编译0错误,运行报错

StarFall 发布于 2012-11-21 21:19, 527 次点击
不知道错哪了。 目的是倒序输出各个单词。。。
代码如下!
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
int main(void)
{
vector<string> words;
string word;
ifstream in("D:\\happy.txt");   //这个文本文档随便建一个 然后输入点东西。。
while(in>>word)
words.push_back(word);
for(int i=words.size();i>=0;i--)
cout<<words[i]<<endl;
return 0;
}

[ 本帖最后由 StarFall 于 2012-11-21 21:21 编辑 ]
6 回复
#2
StarFall2012-11-21 21:44
— —! 好像是那个文档的问题,我换了几个单词就好了。。。。。
#3
mmmmmmmmmmmm2012-11-22 09:24
我刚刚运行了一下 没问题的啊 楼主

不过是不是用这个更好
for(vector<string>::size_type index=words.size(); index>=0; index++)
#4
wuyushuai5212012-11-22 09:31
没问题呀,楼主
#5
rjsp2012-11-22 13:00
以下是引用mmmmmmmmmmmm在2012-11-22 09:24:00的发言:

我刚刚运行了一下 没问题的啊 楼主
 
不过是不是用这个更好
for(vector::size_type index=words.size(); index>=0; index++)
size_type一般都是无符号类型,也就是index>=0永远是true,死循环
你应该这么写:
for(vector<string>::size_type index=words.size(); index!=0; index++)
    cout<<words[i-1]<<endl;
同样,楼主的代码也是错误的,应该是
for(int i=words.size();i>0;i--)
    cout<<words[i-1]<<endl;

for(int i=words.size()-1;i>=0;i--)
    cout<<words[i]<<endl;
#6
mmmmmmmmmmmm2012-11-22 14:25
回复 5楼 rjsp
感谢版主指点 学习了
#7
天剑山2012-11-24 14:27
应该是从size()-1开始到0结束
恩...在文本较短的情况下用int做索引变量足够了,但是一旦文件过长就会溢出....应该用vector<string>::size_type ,这才是一个良好的习惯......
1