сегодня у меня проблема с моим кодом C ++.
Проблемный бит должен считывать текстовый файл построчно и сохранять определенные строки в векторе.
ОК, во-первых, код (часть):
vector<string> write::get_lines() {
fstream in;
string path;
string line;
vector<string> lines;
if (elementType.substr(0,2).compare("od")==0) {
path = inFilePath + filename;
in.open(path.c_str(), ios::in);
std::getline(in,line);
getline(in,line);
while (std::getline(in, line)) {
if (line.substr(0, elementID.length()) == elementID) {
lines.push_back(line);
}
}
} else {
if (elementID.length() > 8){
string typeInFile = elementType.substr(2);
transform(typeInFile.begin(), typeInFile.end(), typeInFile.begin(), ::toupper);
string elementID1 = elementID.substr(0,8);
string elementID2 = elementID.substr(8);
path = inFilePath + filename;
in.open(path.c_str(), ios::in);
while (getline(in, line)) {
if (contains(line, typeInFile) && contains(line, elementID1) && contains(line, elementID2)) {
lines.push_back(line);
}
}
} else{
string typeInFile = elementType.substr(2);
transform(typeInFile.begin(), typeInFile.end(), typeInFile.begin(), ::toupper);
path = inFilePath + filename;
in.open(path.c_str(), ios::in);
while (getline(in, line)) {
if (contains(line, typeInFile) && contains(line, elementID)) {
lines.push_back(line);
}
}
}
}
return lines;
}
Проблема в цикле while или, вернее, в getline (in, line).
Путь к файлу правильный и файл открыт.
К сожалению, первая строка файла — это какой-то признак, который я не могу идентифицировать. Это выглядит примерно так:
Но короткий ход горизонтальный, а длинный — вертикальный и направо вниз по правой стороне короткого.
Я предполагаю, что это проблема. Но я не могу найти решение.
Теперь мой вопрос: как мне получить std :: getline () после этого зловещего знака.
редактировать: я разместил весь метод. Может быть, это помогает.
Ок я кровавый идиот ……
У меня было неправильное имя файла. Это было написано правильно, но я упустил момент, что имя файла имеет только заглавные буквы.
Тем не менее, эта статья довольно хорошая и помогла мне разобраться …
как для std :: ifstream и std :: getline
Итак, если у кого-то возникнет такая же проблема, как у меня: ПРОВЕРЬТЕ СВОЙ ЗАПИСЬ !!!