我需要解析以下文件,以便将项目作为字符串,然后跳过#符号,然后将价格作为浮点数。 文本文件:
hammer#9.95
saw#20.15
shovel#35.40
我该怎么做?
答案 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::string
,std::ifstream
,std::getline
和std::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函数