一:
vector 中删除重复的元素:
a.erase(unique(a.begin(), a.end()),a.end());
s格式符,用来输出一个字符串。有以下几种用法
1.%s 输入字符串
2.%ms 输出字符串占m列,如果字符串本身长度超过m,则可以超过m列,全数输出,若果字符串小于m,则左补空格
3.%-ms 输出字符串占m列,如果字符串小于m,则字符串靠左,右补空格
4.m.ns 输出占m列,但是只取字符串中的左端n个字符,这n个字符输入输出在m列的右列, 左补空格
二: 两个数异或等于0
三: npos可以表示string的结束位子,是string::type_size 类型的,也就是find()返回的类型。find函数在找不到指定值得情况下会返回string::npos
str[i + 1].find(str[i]) == str[i + 1].npos
四: istringstream是一个比较有用的c++的输入输出控制类。
C++引入了ostringstream、istringstream、stringstream这三个类,要使用他们创建对象就必须包含<sstream>这个头文件。
istringstream类用于执行C++风格的串流的输入操作。
ostringstream类用于执行C风格的串流的输出操作。
strstream类同时可以支持C风格的串流的输入输出操作。
istringstream的构造函数原形如下:
istringstream::istringstream(string str);
它的作用是从string对象str中读取字符。
#include<iostream>
#include<sstream> //istringstream 必须包含这个头文件
#include<string>
using namespace std;
int main()
{
string str="i an a boy";
istringstream is(str);
string s;
while(is>>s)
{
cout<<s<<endl;
}
}
输出是:
i
am
a
boy
针对第四个知识点的例题 :
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072
Problem Description
lily的好朋友xiaoou333最近很空,他想了一件没有什么意义的事情,就是统计一篇文章里不同单词的总数。下面你的任务是帮助xiaoou333解决这个问题。
Input
有多组数据,每组一行,每组就是一篇小文章。每篇小文章都是由小写字母和空格组成,没有标点符号,遇到#时表示输入结束。
Output
每组只输出一个整数,其单独成行,该整数代表一篇文章里不同单词的总数。
Sample Input
you are my friend #
Sample Output
4
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <set>
#include <sstream>
using namespace std;
int main(){
string str1,str2;
while(getline(cin,str1)){
if(str1 == "#") break;
istringstream stream(str1);
set<string>Set;
while(stream>>str2){
Set.insert(str2);
}
cout<<Set.size()<<endl;
}
return 0;
}