如何解析C+中分隔符后的部件的疑难解答+;? 刚刚开始学习C++。 我正在尝试读取以下格式的ics文件: 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
我所做的是读取每一行并调用一个字符串来查找特定的分隔符,得到它后面的部分,然后将它推到一个向量中。 以下是我读取文件的方法:如何解析C+中分隔符后的部件的疑难解答+;? 刚刚开始学习C++。 我正在尝试读取以下格式的ics文件: 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,c++,icalendar,C++,Icalendar,我所做的是读取每一行并调用一个字符串来查找特定的分隔符,得到它后面的部分,然后将它推到一个向量中。 以下是我读取文件的方法: void SimpleCalendar::initialize(){ int counter = 0; string getLine; ifstream readFile; readFile.open("cal.ics"); if(readFile.fail()){ throw FileException("Error! Cann
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++;
}
}
void SimpleCalendar::initialize(){
int计数器=0;
字符串getLine;
ifstream读取文件;
readFile.open(“cal.ics”);
if(readFile.fail()){
抛出FileException(“错误!无法打开文件。”);
}
而(!readFile.eof()){
readFile>>getLine;
size\u t summ=getLine.find(“SUMMARY;LANGUAGE=en-ca:”;
if(summ!=string::npos){
当然,向后推(getLine.substr(summ+1));
cout不要使用>
,它只读取一个单词(以空格结尾)。使用getline()
读取整行
和find()
返回匹配开始的索引,而不是结束的索引。调用substr()
时,需要添加要跳过的字符串长度
while(readFile.getline(getline)){
size\u t summ=getLine.find(“SUMMARY;LANGUAGE=en-ca:”;
if(summ!=string::npos){
course.push_back(getLine.substr(summ+sizeof“SUMMARY;LANGUAGE=en-ca:”);
cout不要使用>
,它只读取一个单词(以空格结尾)。使用getline()
读取整行
和find()
返回匹配开始的索引,而不是结束的索引。调用substr()
时,需要添加要跳过的字符串长度
while(readFile.getline(getline)){
size\u t summ=getLine.find(“SUMMARY;LANGUAGE=en-ca:”;
if(summ!=string::npos){
course.push_back(getLine.substr(summ+sizeof“SUMMARY;LANGUAGE=en-ca:”);
cout此外,请注意,使用中描述的折叠机制,属性值可能跨越多行
换句话说,一个长的摘要将表示为
SUMMARY:bla bla bla...
continuation of bla bla bla
此外,请注意,使用中所述的折叠机制,属性值可能跨越多行
换句话说,一个长的摘要将表示为
SUMMARY:bla bla bla...
continuation of bla bla bla
谢谢!我只是想确认下一行的内容,比如“地点”:。我是否需要用另一个分隔符执行另一个if语句?是的,尽管您可能希望设计更通用的语句。例如,在行中查找第一个:
或;
,获取前面的单词,然后使用字符串if/else if/
根据不同的前缀字符串对其进行测试。谢谢!只想确认一下m我怎样才能得到下一行,比如“地点”:。我是否需要使用另一个分隔符执行另一个if语句?是的,尽管您可能希望设计更通用的语句。例如,在行中查找第一个:
或;
,获取前面的单词,然后使用if/else if/
字符串对不同的前缀字符串进行测试。