从文件中读取单词并在C ++中遇到某个单词时打印

时间:2015-10-29 01:58:29

标签: c++

我最近开始修改C ++,我正在试图弄清楚如何从文件中读取。 我有一个以:

开头的文件
   1 !NTITLE
solvent mask generated by cctbx
      64       0      64      72       0      72      96       0      96
 3.91500E+01 4.46750E+01 6.10130E+01 7.26100E+01 7.17200E+01 7.53500E+01

(第一行上方的空白行)

我正在尝试逐字逐句阅读,并按如下方式打印mask这个词:

string myString;
ifstream xplorFile("mask.xplor");

if(!xplorFile){
    cout << "error opening file" <<endl;
    return -1;
}

while (!xplorFile.eof()) {
    getline(xplorFile, myString, ' ');
    if (myString == "mask") {
        cout << myString << endl;
    }
}

按预期输出mask。但是,如果我尝试通过将solvent语句更改为

来尝试打印if
if (myString == "solvent") {
        cout << myString << endl;
}

我没有输出。同样,如果我尝试!NTITLE我没有输出。为什么比较不起作用?

2 个答案:

答案 0 :(得分:1)

变化

while (!xplorFile.eof()) {
    getline(xplorFile, myString, ' ');

while (xplorFile >> mystring) {

我的猜测是,由于solvent位于行的开头,前面没有空格,因此带有分隔符的getline函数会产生!NTITLE\nsolvent。使用&gt;&gt;运算符将解决该问题,因为它会在所有空格上进行标记。

答案 1 :(得分:1)

逐字逐句获取文件内容的方法就像这样

while (xplorFile >> myString) {
    if (myString == "mask") {
        cout << myString << endl;
    }
}