接收带空格的一段语句
接受带空格的一段话,以换行分隔;
注意:①如果在getline之前用过scanf,则应该先用getchar()读掉输入流的第一个回车;
②别忘记 cin 部分;
getline(cin, s);
将字符串中第k个“数字字符”转化为int型数字
int num = s[k] - '0';
连接两个字符串
string c = a + b;
插入字符串
增:在位序 k 后面插入字符串str;
eg:
string str = "abc";
str.insert(1, "xyz");
输出: str = " axyzbc";
s.insert(k, str);
删除字符串中内容
删除下标为k的单个字符,或删除下标为k 向后的n个字符;
注意:形参为 int , int
s.erase(k, 1);
s.erase(k, n);
删除从first到last的所有字符;
注意:first和last为迭代器;
s.erase(first, last);
判断字符串str中是否存在子字符串s
//查1:查找失败条件是string::npos
if(str.find(s) == string::npos)
查找str中下标为pos,长度为len的子串s
s = str.substr(pos.len);
将字符转化为数字
int a;
string s;
//字符串变为int
a = stoi(s);
//字符串变为float
a = stof(s);
//字符串变为long long
a = stoll(s);
//字符串变为double
a = stod(s);
以字符串a为输入,读取字符串b
头文件:#include <sstream>
定义一个sstream类型的变量 str,其内容为一段话a;
用b读取str中的内容;
#include <sstream>
stringstream str(a);
while(str >> b) { 处理b }
定位到输入流中的特定字符“key”的首位置
①用字符c遍历str,直至c到达“key”的首字母处;
②用字符串 key 接收字符“key”;
string key;
char c;
while( c = getchar(), c != '\"'); //用c读入输入流,直至出现左引号 "
while( c = getchar(), c != '\"') key += c; //在出现右引号 " 之前不断读入key
读入字符串str中被 { } 扩住的内容key
①用s先逐个接收str中内容,直至遇到 '{',
②用key逐个接收介于 '{' 和 '}' 中的内容,
③遇到 '}' 时退出接收key,继续接收s直至出现下一个 '{' 或结束;
string str, s, key;
int i = 0;
while( i < str.size())
{
if(str[i] == '{')
{
i ++; //跳过'{'
while(str[i] != '}') key += str[i]; //接收 { key }
i ++; //跳过'}'
}
else
i ++; //跳过无关字符;
}
判断一个字母是不是数字
if( isdigit(s) );
大小字母转换函数
//大写变小写
tolower(s);
//小写变大写
toupper(s);