C++如何识别某个字符串是否为excel函数公式大全if?

C++ get()函数读入一个字符_C语言中文网
&&C语言辅导班&&&&
&&C++辅导班&&&&
&&算法/数据结构辅导班&&&&
读者QQ交流群:loading...
&&/&&&&/&&&&/&&&&/&&
get()函数是cin输入流对象的成员函数,它有3种形式:无参数的,有一个参数的,有3个参数的。
关于cin输入流的更多信息请查看:&和&
1) 不带参数的get函数
其调用形式为
& & cin.get()
用来从指定的输入流中提取一个字符(包括空白字符),函数的返回值就是读入的字符。 若遇到输入流中的文件结束符,则函数值返回文件结束标志EOF(End Of File),一般以-1代表EOF,用-1而不用0或正值,是考虑到不与字符的ASCII代码混淆,但不同的C ++系统所用的EOF值有可能不同。
[例13.6] 用get函数读入字符。
#include &iostream&
int main( )
cout&&&enter a sentence:&&&
while((c=cin.get())!=EOF)
cout.put(c);
运行情况如下:
enter a sentence:
I study C++ very hard.↙(输入一行字符)
I study C++ very hard.&&&&&&&&&&&&& (输出该行字符)
^Z↙(程序结束)
C语言中的getchar函数与流成员函数cin.get( )的功能相同,C++保留了C的这种用法,可以用getchar(c)从键盘读入一个字符赋给c。
2) 有一个参数的get函数
其调用形式为
& & cin.get(ch)
其作用是从输入流中读取一个字符,赋给字符变量ch。如果读取成功则函数返回true(真),如失败(遇文件结束符) 则函数返回false(假)。例13.6可以改写如下:
#include &iostream&
int main( )
cout&&&enter a sentence:&&&
while(cin.get(c))
//读取一个字符赋给字符变量c,如果读取成功,cin.get(c)为真
{cout.put(c);}
cout&&&end&&&
3) 有3个参数的get函数
其调用形式为
& & cin.get(字符数组, 字符个数n, 终止字符)
& & cin.get(字符指针, 字符个数n, 终止字符)
其作用是从输入流中读取n-1个字符,赋给指定的字符数组(或字符指针指向的数组),如果在读取n-1个字符之前遇到指定的终止字符,则提前结束读取。如果读取成功则函数返回true(真),如失败(遇文件结束符) 则函数返回false(假)。再将例13.6改写如下:
#include &iostream&
int main( )
char ch[20];
cout&&&enter a sentence:&&&
cin.get(ch,10,'\\n');//指定换行符为终止字符
cout&&ch&&
运行情况如下:
enter a sentence:
I study C++ very hard.↙
在输入流中有22个字符,但由于在get函数中指定的n为10,读取n -1个(即9个)字符并赋给字符数组ch中前9个元素。有人可能要问:指定n-10,为什么只读取9个字符呢?因为存放的是一个字符串,因此在9个字符之后要加入一个字符串结束标志,实际上存放到数组中的是10个字符。请读者思考:如果不加入字符串结束标志,会 出现什么情况?结果是:在用&cout&&ch&;输出数组中的字符时,不是输出读入的字符串,而是数组中的全部元素。大家可以亲自测试一下ch[9](即数组中第10个元素)的值是什么。
如果输入↙
即未读完第9个字符就遇到终止字符、读取操作终止,前5个字符已存放到数组ch[0]到ch[4]中,ch[5]中存放'\0'。
如果在get函数中指定的n为20,而输入22个字符,则将输入流中前19个字符赋给字符数组ch中前19个元素,再加入一个'\0'。
get函数中第3个参数可以省写,此时默认为'\n'。下面两行等价:
& & cin.get(ch,10,'\\n');
& & cin.get(ch,10);
终止字符也可以用其他字符。如
& & cin.get(ch,10,'x');
在遇到字符'x'时停止读取操作。
编程帮,一个分享编程知识的公众号。跟着一起学习,每天都有进步。
通俗易懂,深入浅出,一篇文章只讲一个知识点。
文章不深奥,不需要钻研,在公交、在地铁、在厕所都可以阅读,随时随地涨姿势。
文章不涉及代码,不烧脑细胞,人人都可以学习。
当你决定关注「编程帮」,你已然超越了90%的程序员!
微信扫描二维码关注
10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 10.12 10.13 10.14 10.15
loading...
验证消息:严长生c++ 怎样判断字符串string里面是否含有某个字符串_百度知道
c++ 怎样判断字符串string里面是否含有某个字符串
答题抽奖
首次认真答题后
即可获得3次抽奖机会,100%中奖。
来自电脑网络类芝麻团
采纳数:4238
获赞数:5442
参与团队:
使用 string 的 find 成员函数。 #include &iostream&#include &string&int main(){string str = &afdsdfs_hello_sdfas#@!&;string str1 = &hello&;string::size_type idx = str.find( str1 );if ( idx != string::npos ){cout && &字符串含有“&& str1 && &\n&;}else{cout && &字符串没有& && str1 && &\n&;}}解析:string::npos是个返回值string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。这些操作全都返回 string::size_type 类型的值,以下标形式标记查找匹配所发生的位置;或者返回一个名为 string::npos 的特殊值(它说明查找没有匹配的)。string 类将 npos 定义为保证大于任何有效下标的值。所以 当 str.find(&哦&)==string::npos时则说明字符串str中不存在“哦”这个字符,反之,str.find(&哦&)!=string::npos则说明字符串str中存在“哦”这个字符
来自电脑网络类芝麻团
采纳数:1463
获赞数:545
参与团队:
C++的string类提供了字符串中查找另一个字符串的函数find。其重载形式为:string::size_type string::find(string &);功能为在string对象中,查找参数string类型的字符串是否存在,如果存在,返回起始位置。不存在则返回 string::npos。参考代码如下:#include &iostream&#include &string&int main(){
string a=&abcdefghigklmn&;
string b=&def&;
string c=&123&;
string::size_
idx=a.find(b);//在a中查找b.
if(idx == string::npos )//不存在。
cout && &not found\n&;
else//存在。
cout &&&found\n&;
idx=a.find(c);//在a中查找c。
if(idx == string::npos )//不存在。
cout && &not found\n&;
else//存在。
cout &&&found\n&;
return 0;}
为你推荐:
其他类似问题
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。传智播客旗下品牌:||||
全国咨询热线:400-618-4000 | 股票代码:839976
c/c++培训之常用的9个字符串C标准库函数之strstr实现
传智播客C/C++培训专家:常用的9个字符串C标准库函数之strstr实现
之前介绍了经常用到的9个字符串C标准库函数,这次我们来介绍一下strstr字符串函数的实现。
函数原型:
char * strstr ( const char * str1, const char * str2 );
str1:需要从其中查找子串的字符串
str2:所要查找的子串
如果从str1中查找到了str2,则返回str1中第一次出现str2的位置,否则返回NULL.
下面我们来测试一下strstr函数的功能:
//测试程序
#include &stdlib.h&
#include &string.h& //strstr
int main()
char str[] = &itcastithemia&;
char substr[] = &th&;//所要查找的子串
char *p = strstr(str, substr);
if (p != NULL)
printf(&%s\n&, p);
printf(&not found %s\n&, substr);
p = strstr(str, &tha&);
if (p != NULL)
printf(&%s\n&, p);
printf(&not found %s\n&, substr);
根据我们上面对strstr功能的介绍,第一次查找子串&th&,会查找成功,所以strstr函数会返回th首次出现的地址,而第二次要查找的子串&tha&并没i用,所以strstr函数会返回NULL.
测试结果如图:
符合我们的预期。
下面自己实现一个strstr函数,思路如下:
从str1的每一个位置开始,依次和str2中的每一个字符进行比较,如果在到str2字符串结尾之前,出现了不等的情况,则结果本轮比较,继续进行下一轮比较,否则查找子串str2成成,返回str1中本轮开始对比的位置。
程序如下:
char *mystrstr(const char *str1, const char *str2)
const char *pstr = str1;
const char *psub = str2;
const char *pcur = NULL;
if (str1 == NULL || str2 == NULL) //判断参数是否合法
return NULL;
while (*pstr != '\0')
pcur = //记录每一次从str1中对比字符的起始位置
psub = str2;
while (*psub != '\0') //从pcur所标示的位置开始依次与psub中的每一个字符进行比较
if (*pcur != *psub) //如果出现字符不相等,则结束本次循环指针移动到下一个位置
if (*psub == '\0') //如果到达子串结尾,则说明查找子串成功
pstr++; //pstr指向str1中的下一个字符串位置
return NULL;
使用自实现的mystrstr运行上面的测试程序,结果如下:
至此,我们成功自实现了一个strstr函数。
&本文版权归传智播客学院所有,欢迎转载,转载请注明作者出处。谢谢!
作者:传智播客C/C++培训学院
400-618-4000在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我想实现的是查找满足正则条件的字符串,google了一下,发现都是用的boost中的函数,难道标准库中没有相关函数么?
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
在Linux下你可以很方便的使用regex.h提供的库。我先贴一段代码展示一下RE在C语言里是怎么用的
,比较粗略点#include&stdio.h&
#include&sys/types.h&
#include&regex.h&
#include&memory.h&
#include&stdlib.h&
int main()
char *bematch = &&;
char *pattern = &h{3,10}(.*)@.{5}.(.*)&;
char errbuf[1024];
char match[100];
int err,nm = 10;
regmatch_t pmatch[nm];
if(regcomp(&reg,pattern,REG_EXTENDED) & 0){
regerror(err,&reg,errbuf,sizeof(errbuf));
printf(&err:%s\n&,errbuf);
err = regexec(&reg,bematch,nm,pmatch,0);
if(err == REG_NOMATCH){
printf(&no match\n&);
}else if(err){
regerror(err,&reg,errbuf,sizeof(errbuf));
printf(&err:%s\n&,errbuf);
for(int i=0;i&10 && pmatch[i].rm_so!=-1;i++){
int len = pmatch[i].rm_eo-pmatch[i].rm_
memset(match,'\0',sizeof(match));
memcpy(match,bematch+pmatch[i].rm_so,len);
printf(&%s\n&,match);
}我打算看看一个邮件地址是否匹配我所提供的pattern。这个邮件地址是
patern为&h{3,10}(.*)@.{5}.(.*)&
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
C++98里肯定是没有正则库的C++0x有std::regex,目前只有VS2010+支持 GCC(libstd++)不支持PCRE/PCRE++是比较老牌的C/C++正则库,跨平台linux下glibc里有正则库,直接include &regex.h&windows下可以用com调vbscript的IRegExp2正则接口,任何版本windows适用,不需要任何额外依赖,速度也很快boost里也有正则,但是boost库东西太多,相当臃肿
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
你可以用linux自带的regex库。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
貌似只有一些第三方的,微软有一个,boost的应该更通用一点吧.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
pcre 是个著名的正则库. php就在用它
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
c++11的&regex&Eg:
#include &regex&
#include &iostream&
//匹配手机号码
int main() {
regex_constants::syntax_option_type fl = regex_constants::
reg.assign("\\b1[35][0-9]\\d{8}|147\\d{8}|1[8][]\\d{8}\\b", fl);
bool found1 = regex_match("", reg);
cout&&found1&&
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。

我要回帖

更多关于 excel最常用的八个函数 的文章

 

随机推荐