今天我的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()超越这个不祥的标志。
编辑:我发布了整个方法。也许这有帮助。
答案 0 :(得分:0)
我的文件名错了。它拼写正确,但我错过了重点,文件名只有大写字母。
尽管如此,这篇文章非常好,并帮助我弄明白......
how to for std::ifstream and std::getline
所以,如果有人遇到和我一样的问题:请检查你的问题!