#include<string>
using namespace stdint main(){
string c
while(1){
cin>>c
if(*(c.end()-1)== '*'){ //c.end() 是一个迭代器,是个指针,前面加个* 就0k
break
}
}
cout<<c<<endl
}
[补充]string用法如下:
1.声明一个C++字符串
声明一个字符串变量很简单:
string Str
这样我们就声明了一个字符串变量,但既然是一个类,就有构造函数和析构函数。上面的声明没有传入参数,所以就直接使用了string的默认的构造函数,这个函数所作的就是把Str初始化为一个空字符串。String类的构造函数和析构函数如下:
a) string s //生成一个空字符串s
b) string s(str) //拷贝构造函数 生成str的复制品
c) string s(str,stridx) //将字符串str内"始于位置stridx"的部分当作字符串的初值
d) string s(str,stridx,strlen) //将字符串str内"始于stridx且长度顶多strlen"的部分作为字符串的初值
e) string s(cstr) //将C字符串作为s的初值
f) string s(chars,chars_len) //将C字符串前chars_len个字符作为字符串s的初值。
g) string s(num,c) //生成一个字符串,包含num个c字符
h) string s(beg,end) //以区间begend(不包含end)内的字符作为字符串s的初值
i) s.~string() //销毁所有字符,释放内存
都很简单,我就不解释了。
2.字符串 *** 作函数
这里是C++字符串的重点,我先把各种 *** 作函数罗列出来,不喜欢把所有函数都看完的人可以在这里找自己喜欢的函数,再到后面看他的详细解释。
a) =,assign() //赋以新值
b) swap() //交换两个字符串的内容
c) +=,append(),push_back() //在尾部添加字符
d) insert() //插入字符
e) erase() //删除字符
f) clear() //删除全部字符
g) replace() //替换字符
h) + //串联字符串
i) ==,!=,<,<=,>,>=,compare() //比较字符串
j) size(),length() //返回字符数量
k) max_size() //返回字符的可能最大个数
l) empty() //判断字符串是否为空
m) capacity() //返回重新分配之前的字符容量
n) reserve() //保留一定量内存以容纳一定数量的字符
o) [ ], at() //存取单一字符
p) >>,getline() //从stream读取某值
q) << //将谋值写入stream
r) copy() //将某值赋值为一个C_string
s) c_str() //将内容以C_string返回
t) data() //将内容以字符数组形式返回
u) substr() //返回某个子字符串
v)查找函数
w)begin() end() //提供类似STL的迭代器支持
x) rbegin() rend() //逆向迭代器
y) get_allocator() //返回配置器
#include <stdio.h>#include <string.h>
void insert(char *src, const char *strToSearch, const char *insertion, char *output)
{
if (NULL == src || NULL == strToSearch || NULL == insertion || NULL == output)
return
char *pToken = strstr(src, strToSearch)
/*直接找到strToSearch, pToken指向开头*/
if (NULL == pToken)
return
size_t patternlen = strlen(strToSearch)
size_t firstpartlen = (pToken - src) + patternlen
strncpy(output, src, firstpartlen)/*拷贝前面部分*/
strcat(output, insertion)/*连上插入的那部分*/
strcat(output, pToken + patternlen)/*结尾那部分*/
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)