C++ primer上习题 ,求更好的解决方法
C++ primer上习题 ,求更好的解决办法。
题目是这样描述的:
读入一段文本到vector对象,每个单词存储为vector中的一个元素。把vector对象中每个单词转化为大写字母。输出vector对象中转化后的元素,每八个单词为一行输出。
下面是我自己解决问题的代码。
就是这样了。我认为把问题解决了,但是在编译过程中,VC++6.0的编译器会报出很多warning。我不知道是什么意思。
而且,有没有其他的算法能解决问题?
求各位高人指教,谢谢了!
------解决方案--------------------
if(word.size!=0) size后面丢了个括号
应该是 if(word.size()!=0)
------解决方案--------------------
题目是这样描述的:
读入一段文本到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>