一、getline()
1、从屏幕读入,切分,不会跳出while。会一直等待输入,换行无效
string s; while(getline(cin, s)) { // 默认按空格切分 cout << s << endl; } string s; while(getline(cin, s, '.')) { // 按'.'切分 cout << s << endl; } string s; while(getline(cin, s, ' .')) { // 按 空格 和 '.' 切分 cout << s << endl; }2、从屏幕读入一行,切分,会跳出while。
string s; getline(cin, s); stringstream sscin(s); while(getline(sscin, s)) { // 默认按空格切分 cout << s << endl; } string s; getline(cin, s); stringstream sscin(s); while(getline(sscin, s, '.')) { // 按'.'切分 cout << s << endl; } string s; getline(cin, s); stringstream sscin(s); while(getline(sscin, s, ' .')) { // 按 空格 和 '.' 切分 cout << s << endl; }二、版本比较
版本: x.x.x.x,返回最小版本。
#include <iostream> #include <vector> #include <string> #include <sstream> #include <climits> #include <algorithm> using namespace std; /* 输入 3, 4.3.5.4, 2.10.3, 2.4 最小版本 2.4 */ int main() { vector<int> minver(4, INT_MAX); //最小版本号初始化 int len = 0; //最小版本号长度 0<=len<=4 //将cin读到另一个流scin中,否则while跳不出去 string s; getline(cin, s); stringstream scin(s); //版本号比较 while(getline(scin, s, ',')) { //按版本号切分 //cout << "#" << s << "#" << endl; vector<int> temp(4, 0); int k = 0; stringstream sv(s); while(getline(sv, s, '.')) { //按数字切分 //cout << "@" << s << "@" << endl; stringstream sn(s); int x; sn >> x; temp[k++] = x; //cout << "&" << x << "&" << endl; } for(int i=0; i<4; i++) { //比较 if(temp[i] < minver[i]) { minver = temp; len = k; break; } } } //输出最小版本号 for(int i=0; i<len-1; i++) { cout << minver[i] << '.'; } cout << minver[len-1]; getchar(); return 0; }