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

请教个位大侠C++primer(4th edition) 上的3.14题(我的代码如下)

wangxiaosu 发布于 2010-11-29 23:25, 645 次点击
编译器为:visual studio team system 2008
问题:编译通过但运行不正常
原书中的3.14题为:读入一段文本到vector对象,每个单词存储为vector中的一个元素。把vector对象中每个单词转化为大写字母。输出vector对象中转化后的元素,每八个            
                  单词为一行。
求教我的程序的问题所在?


#include<iostream>
#include<vector>
#include<string>
using std::string;
using std::vector;
using std::cin;
using std::cout;
using std::endl;

int main()
{
    vector<string> ivec;
    string str;
    while(cin>>str)
    {
        ivec.push_back(str);
    }

    for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)
    {
        for(int i=0;i!=sizeof(ivec[ix]);i++)
            if(ivec[ix][i]>=97)
                ivec[ix][i]-=32;
    }

    for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)
    {
        cout<<ivec[ix]<<" ";
        if((ix+1)%8==0)
            cout<<endl;
    }
}
5 回复
#2
wangxiaosu2010-11-30 12:30
请各位帮帮忙,谢谢
#3
zhoufeng19882010-11-30 13:15
程序代码:
#include<iostream>
#include<vector>
#include<string>

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

int main()
{
    vector<string> ivec;
    string str;
    while(cin >> str)
    {
        ivec.push_back(str);
    }

    for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)
    {
        for(int i=0; i < ivec[ix].size();i++)
            if(ivec[ix][i]>=97)
                ivec[ix][i]-=32;
    }

    for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)
    {
        cout<<ivec[ix]<<" ";
        if((ix+1)%8==0)
            cout<<endl;
    }

    return 0;
}

#4
wangxiaosu2010-11-30 22:51
回复 3楼 zhoufeng1988
谢谢,不过我发现我们的代码基本一样.请问你有C++primer(4th edition) 的答案吗?求一份,谢谢,发到邮箱wangxiaosu0501@
#5
zhoufeng19882010-12-01 09:15
https://bbs.bccn.net/thread-326954-1-1.html
这是3rd的答案,4th应该会有一些变动。自己下吧。
#6
wangxiaosu2010-12-01 12:17
回复 5楼 zhoufeng1988
谢谢
1