包含头文件的问题之1.7编程基础之字符串 24:单词的长度
1.7编程基础之字符串 24:单词的长度
注意头文件 #include<string>和#include<cstring>不通用
1 #include<iostream> 2 #include<string> 3 #include<cstring> 4 #include<cstdio> 5 using namespace std; 6 char a[1001]; 7 int main() 8 { 9 // cin>>a;cout<<strlen(a); 10 // while(cin>>a){cout<<','<<strlen(a); }//最简方法 ,cin和scanf("%s",s)类似,遇到空格结束。 11 int len,s=0,word=0; 12 gets(a); //使用cstdio头文件 13 len=strlen(a); //在niop题库中需使用cstring头文件 ,虽然可能在windows下不用 14 for(int i=0;i<len;i++) 15 { 16 17 if(a[i]==' '&&word==0) 18 { 19 cout<<s<<',';word=1;s=0; 20 } 21 else if(a[i]!=' ') 22 { 23 s++;word=0; 24 } 25 26 } 27 cout<<s<<endl; 28 return 0; 29 }
上面程序只适用于输入数据只有一行的情况,下面使用geline,stringstream解决多行输入问题
stringstream字符串流可以实现类似sscanf和sprintf的功能:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | #include<iostream> #include<string> #include<cstring> #include<sstream> using namespace std; int main() { string s; char a[1001]; while (getline(cin,s)) { int t=1; stringstream ss(s); for ( int i=0;ss>>a;i++) { if (t){ t=0;cout<< strlen (a); } else cout<< ',' << strlen (a); } } return 0; } |
下面是一个 stringstream字符串流的例子
/*读入两个整数,中间用空格隔开,输出他们的和*/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <cstdio> #include <sstream> #include <iostream> #include<string> using namespace std; #define MAXN 100010 int main() { char s[1000]; cin.getline(s,1000, '\n' ); //string s;getline(cin,s); //用这句功能类似 stringstream ss(s); int a,b; ss>>a>>b; //类似sscanf(s,"%d%d",&a,&b); cout << a+b << "\n" ; return 0; } |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步