将string的首字符变成大写字母并输出
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("some string");
if(!s.empty())
s[0] = toupper(s[0]);
cout<< s << endl;
/*用迭代器实现
if(s.begin() != s.end())
{
auto it = s.begin();
*it = toupper(*it);
}
cout<<s<<endl;
*/
return 0;
}
PS:其实就是一个toupper()的使用,将一个字符转换成它的大写字符。
将string的第一个单词都变成大写字母
#include <iostream>
#include <string>
using namespace std;
int main()
{
string s("some string");
for(decltype(s.size()) index = 0;index != s.size() && !isspace(s[index]);++index)
s[index] = toupper(s[index]);
/*用迭代器来实现
for(auto it = s.begin(); it != s.end() && !isspace(*it); ++it)
*it = toupper(*it);
*/
cout<< s <<endl;
return 0;
}
想要编写一个程序把0到15之间的十进制数转换成对应的十六进制的形式
#include <iostream>
#include <string>
using namespace std;
int main()
{
const string hexdigits = "0123456789ABCDEF";
string result;
string::size_type n;
while (cin >> n) {
if (n < hexdigits.size())
result += hexdigits[n];
}
cout<< "Your hex number is :" << result <<endl;
}
PS:在测试的时候,输入完数据之后,Enter键进入到下一行,然后按组合键Ctrl+D。很巧妙,利用string做了一张表,10进制到16进制(以10进制为下标,其内容为10进制对应的16进制)
有一组成绩的集合,其中成绩的取值是从0到100.以10分为一个分数段,要求统计各个分数段到底有多少个成绩?
#include <iostream>
#include <vector>
using namespace std;
int main()
{
//11个分数段分别是:0、1、2...9、10字头的
vector<unsigned> scores(11, 0);//总共11个分数段,存在动态数组scores里面
unsigned grade;
while (cin >> grade) {
if (grade <= 100)
++scores[grade / 10];
}
//范围for语句
for(auto score : scores)
{
cout<<score<<" ";
}
cout<<endl;
/*
//使用迭代器
for (auto it = scores.begin(); it != scores.end(); ++it) {
cout << *it << " ";
}
*/
return 0;
}
PS:不能用任何下标的形式来添加vector的元素。可以用于访问其中的元素。下标形式直接添加元素,有时候会越界的吧。
找出数组中第一个是负数的元素
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
int arr[10] = {1,2,-3,4,-5,6,-7,8,9,5};
int *pbeg = begin(arr),*pend = end(arr);
while (pbeg != pend && *pbeg >= 0)
++pbeg;
cout<<*pbeg<<endl;
}
PS: begin()和end(),分别返回指向arr首元素的地址和arr最后一个元素之后的地址。
用数组来初始化vector
#include <iostream>
#include <string>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
int arr[10] = {1,2,-3,4,-5,6,-7,8,9,5};
vector<int >ivec(begin(arr), end(arr));
for(auto figure : ivec)
cout<< figure << " ";
cout<<endl;
vector<int> subVec(arr +1, arr +4);//不包括arr+4位置上的元素,右开
for(auto figure : subVec)
cout<< figure << " ";
cout<<endl;
}