0

我正在尝试解析包含配方成分列表的文本文件

例子:

1 cup sour cream
1 cup oil
1 teaspoon lemon juice

我不确定如何分隔,1 cup并且sour cream每行总是只有 3 个参数。

如果我用空格分隔它,那么sour cream将算作两个参数。

4

4 回答 4

2
double quantity;
string unit;
string ingredient;

input_stream >> quantity >> unit;
getline(input_stream, ingredient);

点击演示

于 2013-09-23T04:09:48.263 回答
0

我这样做的天真的 C++ 方式是将字符串在第二个空格上分成两部分。第一部分是字符串“1 cup”,第二部分是“sour cream”。但是您可能应该为此使用 flex 。

于 2013-09-23T04:11:11.573 回答
0

所以我不完全确定您要问什么,但是如果您要问如何将第一个数字和第二个单词一起提取,其余部分分别提取,则您要做的就是:

string amount, measurements, recipe;    

while (!infile.eof()){
    infile >> amount; //this will always give you the number
    infile >> measurements; // this will give the second part(cup,teaspoon)
    getline(infile,recipe); // this will give you the rest of the line
于 2013-09-23T04:24:07.537 回答
0
#include<iostream>
#include<sstream>
#include<fstream>
using namespace std;

int main()
{
        ifstream in_file("test.txt");
        string line;
        while (getline(in_file, line))
        {   
            stringstream ss(line);
            int quantity;
            string unit;
            string ingredient;
            ss >> quantity;
            ss >> unit;
            getline(ss, ingredient);
            cout << "quantity: " << quantity << endl;
            cout << "uint: " << unit << endl;
            cout << "ingredient: " << ingredient << endl;
        }   
}
于 2013-09-23T04:36:04.183 回答