我想创建一个控制台项目,通过数字读取文件。例如:查找数字1 2,并且它只会在控制台中打印出包含这些数字的文件夹中的文本行。
在这种情况下,它只会打印出“bibi ceki”和“krki cko”。 在我的代码中,有很多缺失的东西。我没有一个循环来检查是否有正确的数字,但以下是我所能做到的最好的,并且我尝试过的:
bibi ceki 1 2
hasesh cekiii 1 3
krki cko 1 2
在这种情况下,它只会打印出“bibi ceki”和“krki cko”。 在我的代码中,有很多缺失的东西。我没有一个循环来检查是否有正确的数字,但以下是我所能做到的最好的,并且我尝试过的:
#include <fstream>
#include <iostream>
#include <string>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int main() {
char str1[10], str2[10];
int raz, ode;
ifstream infile("file.txt");
while (infile.good()) {
fscanf(infile, "%s %s %d %d", str1, str2, &raz, &ode); //this thing cant be used lik this
while(raz==1 && ode==2) {
string sLine;
getline(infile, sLine);
cout << sLine << endl;
}
}
infile.close();
return 0;
}
你可以看到,使用fscanf的那行代码没有起作用,我不知道该怎么办。
我需要一些帮助和建议,如果有更好的方法,请尽可能具体地说明,因为我是c++/c的新手。
raz==1 && ode==2
时,while(raz==1 && ode==2)
会陷入无限循环。将它改为if(raz==1 && ode==2)
即可。而且,由于你已经解析了str1
和str2
,因此不需要使用getline()
。可以使用if(raz==1 && ode==2) { cout << str1 << " " << str2 << endl; }
。 - raymelfranciscoraz==1 && ode==2
打印出bibi ceki
,krki cko
。而raz == 1 && ode == 3
则打印出hasesh cekiii
。我将while(raz==1 && ode==2)
改为if(raz==1 && ode==2) { cout << str1 << " " << str2 << endl; }
。 - raymelfrancisco