读书人

有行代码看不懂,EventRecord.substr(1

发布时间: 2012-02-21 16:26:23 作者: rapoo

有行代码看不懂,请指教EventRecord.substr(12,4)=="1997";
#include <string>
#include <list>
#include <algorithm>
#include<iostream>
using namespace std;

class EventIsIn1997 {
public:
bool operator () (string& EventRecord) {
// year field is at position 12 for 4 characters in EventRecord
return EventRecord.substr(12,4)=="1997"; //这行看不懂,请指教
}
};

int main (void) {
list<string> Events;

// string positions 0123456789012345678901234567890123456789012345
Events.push_back("07 January 1995 Draft plan of house prepared");
Events.push_back("07 February 1996 Detailed plan of house prepared");
Events.push_back("10 January 1997 Client agrees to job");
Events.push_back("15 January 1997 Builder starts work on bedroom");
Events.push_back("30 April 1997 Builder finishes work");

list<string>::iterator EventIterator = find_if (Events.begin(), Events.end(), EventIsIn1997());

// find_if completes the first time EventIsIn1997()() returns true
// for any object. It returns an iterator to that object which we
// can dereference to get the object, or if EventIsIn1997()() never
// returned true, find_if returns end()
if (EventIterator==Events.end()) {
cout << "Event not found in list" << endl;
}
else {
cout << *EventIterator << endl;
}
}


[解决办法]
return EventRecord.substr(12,4)=="1997"; //这行看不懂,请指教

取得字串 从第12个位置开始取得长度为4.

== 是判断是否等于 “1997”

不知道解释的是否清晰??

读书人网 >C++

热点推荐