如何让std :: getline超越第一行

时间:2015-06-03 11:06:35

标签: c++ getline control-characters

今天我的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()超越这个不祥的标志。

编辑:我发布了整个方法。也许这有帮助。

1 个答案:

答案 0 :(得分:0)

好吧,我是一个血腥的白痴......

我的文件名错了。它拼写正确,但我错过了重点,文件名只有大写字母。

尽管如此,这篇文章非常好,并帮助我弄明白......

how to for std::ifstream and std::getline

所以,如果有人遇到和我一样的问题:请检查你的问题!