1. 统计一句话中有多少个单词,并分行打印。
#include <iostream>
using namespace std;
int main (void) {
char ch = ' ';
int count= 0;
string s ;
string ss;
cout <<"输入:" << endl;
getline(cin,s);// 这里可以在输入时不让cin去掉空格字符(getline函数是遇回车符结束输入)
cout <<"输出:" << endl;
for (int i=0;i<s.length();++i){
if(s.at(i)!= ch){
ss+=s.at(i);
}else{
cout << ss << endl ;
ss.clear();
count++;
}
}
cout << ss <<endl ;//输出最后一个单词
cout << "共有"<< count+1<<"个单词"<<endl ;
return 0;
}
思考:
1. 这里为什么不把s定义为一个char数组,然后用gets()读入???
2. getline(),getS()和getchar()、puts()和putchar()的区别???
答案我会在下一篇博客中给出详细的解答
拓展1.
输入一个加乘表达式,将每一个部分拆开分行打印
#include <iostream>
using namespace std;
int main (void) {
char ch[] = {'+','*'};
string s;
cout << "请输入一个加乘表达式:"<<endl;
cin >> s;
string ss;
for (int i=0;i<s.length();++i){
if(s.at(i)!= ch[0] && s.at(i)!= ch[1] ){
ss+=s.at(i);
}else{
cout << ss << endl ;
ss.clear();
cout << s.at(i) << endl;
}
}
cout << ss <<endl;
return 0;
}
拓展2
把直接输入改进为从文件中读:
#include <iostream>
#include <fstream>
#include <stdlib.h>
using namespace std;
int main (void) {
char ch[] = {'+','*'};
int count=0;
string s;
string ss;
ifstream fin("example.txt");
if(!fin.is_open()){
cout << "Error opening file";
exit (1);//退出程序
}
while(!fin.eof()){
getline(fin,s);
}
cout << "输出:" << endl;
for (int i=0;i<s.length();++i){
if(s.at(i)!= ch[0] && s.at(i)!= ch[1] ){
ss+=s.at(i);
}else{
cout << ss << endl ;
count++;
ss.clear();
cout << s.at(i) << endl;
}
}
cout << ss <<endl;
cout << "共"<<count+1<< "个操作数"<< endl;
return 0;
}