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的功能:
#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字符串流的例子
/*读入两个整数,中间用空格隔开,输出他们的和*/
#include <cstdio> #include <sstream> #include <iostream> #include<string> using namespace std; #define MAXN 100010 int main() { char s[1000]; cin.getline(s,1000,' '); //string s;getline(cin,s); //用这句功能类似 stringstream ss(s); int a,b; ss>>a>>b; //类似sscanf(s,"%d%d",&a,&b); cout << a+b << " "; return 0; }