c ++解析文本文件的价格

时间:2013-11-13 08:04:07

标签: c++ parsing

我需要解析以下文件,以便将项目作为字符串,然后跳过#符号,然后将价格作为浮点数。 文本文件:

hammer#9.95
saw#20.15
shovel#35.40

我该怎么做?

2 个答案:

答案 0 :(得分:2)

逐行将文件读入字符串。找到#并将第二部分解析为浮动。

std::ifstream file("input.txt");

for (std::string line; std::getline(file, line); )
{
    auto sharp = line.find('#'); // std::size_t sharp = ... 

    if (sharp != std::string::npos)
    {
        std::string name(line, 0, sharp);

        line.erase(0, sharp+1);

        float price = std::stof(line);

        std::cout << name << " " << price << "\n";
    }
}

注意:我没有进行错误检查,自己做一个练习。您还应该了解std::stringstd::ifstreamstd::getlinestd::stof

答案 1 :(得分:2)

如果您使用呈现格式的std :: string,您可以使用以下内容:

std::string test {"test#5.23"};
std::cout << std::stof(std::string{test.begin() + test.rfind('#') + 1, test.end()});

请注意,std :: stof是C ++ 11函数