繁体   English   中英

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

[英]Reading words from a file and printing if a certain word is encountered in 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 但是,如果我尝试通过将if语句更改为来打印solvent

if (myString == "solvent") {
        cout << myString << endl;
}

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

更改

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

while (xplorFile >> mystring) {

我的猜测是,由于solvent在行的开头而不是空格,因此带有定界符''的getline函数将产生!NTITLE\\nsolvent 使用>>运算符可以解决该问题,因为它会在所有空格上进行标记。

逐字获取文件内容的简单方法是这样的

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM