我正在尝试阅读文本文件并将水果与我所拥有的类型相匹配(例如,我输入苹果,它将搜索文本文件中的单词apple并匹配它并输出它已被发现)但我正在努力实现我想要的结果,因此需要帮助。
我有一个文本文件(fruit.txt),内容如下所示
苹果,30
香蕉,20
梨,10,这是我的代码
string fruit;
string amount;
string line = " ";
ifstream readFile("fruit.txt");
fstream fin;
cout << "Enter A fruit: ";
cin >> fruit;
fin >> fruit >> amount;
while (getline(readFile, line,','))
{
if(fruit != line) {
cout <<"the fruit that you type is not found.";
}
else {
cout <<"fruit found! "<< fruit;
}
}
请指教 感谢。
答案 0 :(得分:0)
在使用getline
的循环中,您将"apple"
读入line
第一个循环,将"30\nbanana"
读入line
第二次等等。
而是阅读整行(使用getline
),然后使用例如std::istringstream
提取水果和数量。
类似的东西:
std::string line;
while (std:::getline(readFile, line))
{
std::istringstream iss(line);
std::string fruit;
if (std::getline(iss, fruit, ','))
{
// Have a fruit, get amount
int amount;
if (iss >> amount)
{
// Have both fruit and amount
}
}
}
答案 1 :(得分:0)
我首先要说的是,我只是像你这样的初学者,接受了你的代码并做了一些改动,例如:
使用“fstream”从文件中读取,直到不是文件的结尾。
然后将每一行读入字符串流中,以便稍后使用逗号分隔符对其进行制动。
我还使用了二维数组来存储水果和每种类型的数量。
最后我不得不在数组中搜索我想要展示的水果。
在我发布代码之前,我想警告你,如果有超过20个水果有多个属性(在这种情况下是数量),该程序将无法工作。 这是代码:
#include <sstream>
#include <fstream>
#include <iostream>
#include <stdio.h>
using namespace std;
void main (void)
{
fstream readFile("fruit.txt");
string fruit,amount,line;
bool found = false;
string fruitArray[20][2];
cout << "Enter A fruit: ";
cin >> fruit;
while (!readFile.eof())
{
int y =0 ;
int x =0 ;
getline(readFile,line);
stringstream ss(line);
string tempFruit;
while (getline(ss,tempFruit,','))
{
fruitArray[x][y] = tempFruit;
y++;
}
x++;
}
for (int i = 0; i < 20; i++)
{
for (int ii = 0; ii < 2; ii++)
{
string test = fruitArray[i][ii] ;
if (test == fruit)
{
amount = fruitArray[i][ii+1];
found = true;
break;
}
else{
cout <<"Searching" << '\n';
}
}
if (found){
cout << "Found: " << fruit << ". Amount:" << amount << endl;
break;
}
}
cout << "Press any key to exit he program.";
getchar();
}
希望你从中学到了一些东西(我确定)。