我最近开始修改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
我没有输出。为什么比较不起作用?
答案 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;
}
}