目录
输入输出的细节
函数find()的用法
收件人列表__牛客网
补充:printf("%.2f%%\n", 100.0 * d[n] / f[n]); 打印百分号‘%’用%%
#include
using namespace std;
#include
int main()
{int n;while (cin >> n) {// 注意:接收完第一行的整数之后,必须要再接收下该行之后的空格,无法直接获取下一行getchar();string name;for (int i = 0; i < n; ++i){// 接收一个用例,当找到','或者‘ ’时候补双引号// 否则:输出getline(cin, name);if (name.find(',') != string::npos || name.find(' ') != string::npos) {cout << "\"" << name << "\"";}else{cout << name;}// 注意:最后一个名字之后没有,if (i + 1 != n)cout << ", ";}cout << endl;}return 0;
}
抄送列表__牛客网
函数find()
1、对string的查找
int main()
{string s="01234567";cout<<"字符串为:"<
2、当pos为无符号整形size_t时
int main()
{string s = "01234567";cout << "字符串为:" << s << endl;size_t pos1 = s.find('a');cout << "未查到返回:" << pos1 << endl;if (pos1 == -1) cout << 666 << endl;return 0;
}字符串为:01234567
未查到返回:4294967295
666
可见虽然是无符号导致值不为-1,但判断时会有整形提升导致依然可以判断成功
3、对于各种容器如果有s.find(容器内容) == s.end()则表示找不到
#include
using namespace std;
#include
#include
int main()
{// 循环处理每一组测试用例string name;while (getline(cin, name)){// 将第一行中的所有名字进行拆解,保存在unordered_set中,方便后序查找unordered_set s;size_t pos = 0;while (pos < name.size()){// 该名字使用""包含了,将该名字截取出来if (name[pos] == '\"'){size_t end = name.find("\"", pos + 1);s.insert(name.substr(pos + 1, end - pos - 1));pos = end + 2;//跳掉后面的双引号和逗号}else{// 该名字没有使用""包含,找到改名字的末尾后直接截取size_t end = name.find(",", pos + 1);if (end == -1){// 已经是最后一个名字了s.insert(name.substr(pos, name.size() - pos));break;}s.insert(name.substr(pos, end - pos));pos = end + 1; //跳掉后面的逗号}}// 接收第二行的名字,然后检测其是否在unordered_set中存在getline(cin, name);if (s.find(name) == s.end()){printf("Important!\n"); //没找到}else{printf("Ignore\n"); //找到了}}return 0;
}
下一篇:Transformer17