![](/img/trans.png)
[英]C++ searching a line from a file for certain words and then inserting a word after those words
[英]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.