问题描述:从cin中读取单词存在vector中,将其中的单词全部变为大写,并且每行八个单词进行输出。
遇到的问题:输出一串数字
问题代码:
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 using std::cout; 5 using std::cin; 6 using std::endl; 7 using std::string; 8 using std::vector; 9 int main(){ 10 vector<string> text; 11 string word; 12 while(cin>>word) 13 text.push_back(word); 14 for(auto str1:text) 15 for(auto c:str1) 16 cout<<toupper(c); 17 return 0; 18 }
输出:
通过查阅资料,发现错误原因是toupper()函数的返回值是整型,所以输出一串数字,只要将它强制转化为字符串型即可;
按照题目要求对代码完善,结果如下;
代码(编译g++ -o vector vector.cc -std=c++11利用c11标准):
1 #include<iostream> 2 #include<string> 3 #include<vector> 4 using std::cout; 5 using std::cin; 6 using std::endl; 7 using std::string; 8 using std::vector; 9 int main(){ 10 vector<string> text; 11 string word; 12 while(cin>>word) 13 text.push_back(word); 14 15 for(auto &str:vector) 16 for(auto &c:str) 17 c=toupper(c); 18 19 for(decltype(vector.size()) i=0;i<vector.size();i++){ 20 if(i%8==0) 21 cout<<endl; 22 cout<<vector[i];} 23 24 cout<<endl; 25 return 0; 26 }
利用Linux文件重定向功能,输出结果: