Я работаю над проектом, где мне нужно прочитать постскриптум и проанализировать данные из файла для использования в моей программе. Я работаю над функцией, чтобы проверить, действителен ли постскрипт, убедившись, что у него есть открывающие и закрывающие разделители.Сравнение строк с строкой, созданной ifstream :: getline
Ниже приведен фрагмент кода, который я написал для этого. Я уверен, что в файле postscript нет дополнительных пространств или чего-либо подобного, чтобы вызвать расхождения между delimitStr и lineStr. Я также попытался установить delimitStr в "%%% BEGIN \ 0" и "%%% BEGIN", но сравнение никогда не работает.
string lineStr;
bool beginFlag = false; //Switches to true when begin statement in postscript is found
string delimitStr = "%%%BEGIN"; //Starts as opening delimiter. Switches to closing when opening is found.
while(psfile) {
getline(psfile, lineStr);
if(!beginFlag && lineStr == delimitStr) {
beginFlag = true;
delimitStr = "%%%END";
cerr << "Begin found." << endl;
}
else if(beginFlag && lineStr == delimitStr)
return true; //Only return true if file has beginning and ending delimiters.
Любая помощь была бы принята с благодарностью.
Примечание: Я также попытался сравнений lineStr и delimitStr с и без ".c_str) (" суффикс. – user1166271
Идиомой правильной строки является 'while (std :: getline (psfile, lineStr)) {/*...*/}'. Ваш код отключен. Кроме того, строки не работают. –
Я могу настроить эту строку кода, но она читает файл без проблем. Сравнение просто не работает. – user1166271