は最近C++を学び始めました。 私は形式でICSファイルを読み込むしようとしています:C++でデリミタの後にパーツを解析する方法のトラブルシューティング?
BEGIN:VEVENT
UID:2179:203860:1:002:1:person
DTSTAMP:20170921T080000Z
SUMMARY;LANGUAGE=en-ca:BIG CITY
LOCATION:CANADA
DTSTART;TZID=Eastern Standard Time:20170914T183000
DTEND;TZID=Eastern Standard Time:20170914T203000
RRULE:FREQ=WEEKLY;UNTIL=20171201T235959;BYDAY=TH
CLASS:PUBLIC
PRIORITY:5
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
END:VEVENT
私はそれぞれの行を読んで、特定の区切り文字を見つける右のそれの後の部分を取得し、ベクターにそれをプッシュする文字列と呼ばれていた何をしましたか。ここ は、ファイルを読み込むための私の方法です:
void SimpleCalendar::initialize(){
int counter = 0;
string getLine;
ifstream readFile;
readFile.open("cal.ics");
if(readFile.fail()){
throw FileException("Error! Cannot open the file.");
}
while(!readFile.eof()){
readFile >> getLine;
size_t summ = getLine.find("SUMMARY;LANGUAGE=en-ca:");
if (summ != string::npos){
course.push_back(getLine.substr(summ+1));
cout << course[counter] << endl;
counter++;
}
}
それが出力されるべきこと:BIG CITY
代わりに、私はこれを取得 - >SUMMARY;LANGUAGE=en-ca:BIG
として表される[理由 ' while(!readFile.eof()) 'が間違っている](https://stackoverflow.com/questions/5605125/why-is-iostreameof-inside-a-loop-condition-considered-wrong) – Barmar