标签:c++ stringstream getline leetcode
int compareVersion(string version1, string version2) {
stringstream s1(version1), s2(version2);
while(1){
int i1= 0, i2 = 0;
if(getline(s1, version1, '.')) //if读取成功,将字符串convert为整型
i1 = stoi(version1); //else读取失败,i1 i2还为0
if(getline(s2, version2, '.'))
i2 = stoi(version2);
//如果s1 s2同时被读完,说明两字符串相等
if(!s1 && !s2) //getline()返回值为false:本次读取失败,即上次读取已经extract完了
return 0; //getline()返回值为true:本次读取成功,但本次可能已经extract完了
//不相等的字符串,会在这里给出判断
if(i1 != i2)
return i1 > i2 ? 1 : -1;
}
}本题解决了对于getline()的几个疑点:
1. getline()作用
| (1) |
istream& getline (istream& is, string& str, char delim); |
|---|---|
| (2) |
istream& getline (istream& is, string& str); |
遇见delim就停止,并discard,下次extract从delim后开始
2.返回值
返回一个istream的引用,可隐式转换为bool型,所以可在while(),if()中使用。当ss被extract完后,ss值还是为true,但如果再次调用getline()去取,ss将为false。
【LeetCode笔记】Compare Version Numbers
标签:c++ stringstream getline leetcode
原文地址:http://blog.csdn.net/uncle_cat/article/details/44149149