首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ primer上习题 ,求更好的解决方法

2012-05-10 
C++ primer上习题 ,求更好的解决办法。题目是这样描述的:读入一段文本到vector对象,每个单词存储为vector中

C++ primer上习题 ,求更好的解决办法。
题目是这样描述的:
读入一段文本到vector对象,每个单词存储为vector中的一个元素。把vector对象中每个单词转化为大写字母。输出vector对象中转化后的元素,每八个单词为一行输出。
下面是我自己解决问题的代码。

C/C++ code
#include<string>#include<vector>#include<iostream>using namespace std;string changecase(string word)//将小写字母转换成大写字母的函数{    if(word.size!=0)    {        for(string::size_type index=0;index!=word.size();index++)        {                word[index]-=32;        }    }    return word;}void main(){       int count=0;//计数器    string temp;    vector<string> ivec;    while(cin>>temp)    {        if(temp=="endstop")//当输入的字符串为endstop时,退出        break;        ivec.push_back(temp);    }    for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)    {        ivec[ix]=changecase(ivec[ix]);        cout<<ivec[ix]<<" ";        count++;        if(count==8)        {            cout<<endl;            count=0;        }    }}

就是这样了。我认为把问题解决了,但是在编译过程中,VC++6.0的编译器会报出很多warning。我不知道是什么意思。
而且,有没有其他的算法能解决问题?
求各位高人指教,谢谢了!

[解决办法]
if(word.size!=0) size后面丢了个括号
应该是 if(word.size()!=0)
[解决办法]
C/C++ code
#include<string>#include<vector>#include<iostream>using namespace std;string changecase(string word)//将小写字母转换成大写字母的函数{    if(word.size()!=0)          /*size是个函数,要加括号才行*/    {        for(string::size_type index=0;index!=word.size();index++)        {            if (word[index]>='a'&&word[index]<='z')         /*只需要把小写字母转换掉就够了,别的不转*/                word[index]-=32;        }    }    return word;}void main(){       int count=0;//计数器    string temp;    vector<string> ivec;    while(cin>>temp)    {        if(temp=="endstop")//当输入的字符串为endstop时,退出            break;        ivec.push_back(temp);    }    for(vector<string>::size_type ix=0;ix!=ivec.size();ix++)    {        ivec[ix]=changecase(ivec[ix]);        cout<<ivec[ix]<<" ";        count=(count+1)%8;        if(count==0)        {            cout<<endl;        }    }}
[解决办法]
word[index]-=32;
判断小写字母用islower()函数比较好
转换为大写字母用toupper()函数比较好
#include <cctype>

热点排行