【发布时间】:2018-09-05 21:22:57
【问题描述】:
我有一个 .txt 文件,我希望从中获得某种行格式,其中包含我需要保留的数据。
例如:
输入.txt:
Number: 654
Name: Alon
-----
我需要:
1.将 654 和“Alon”提取到相应的变量中。
2。如果格式不准确,则抛出错误。
如果这是 C,我可能会使用:
if (fscanf(inputFile, "Number: %d", &num) == 0)
{
// raise an error
}
假设使用 C 的函数不是一个好主意,我剩下的 std::cin 可能让我可以访问我需要提取的数据,但无法控制包装数据的字符串的确切格式。
我已经使用 .我还使用 std::getline(...) 检索了第一行。 这就是我所拥有的:
std::ifstream inputFile;
string lineToParse;
inputFile.open("input.txt", std::fstream::in);
if (inputFile.fail())
{
// throw exception
}
else
{
std::getline(inputFile, lineToParse);
int data;
inputFile >> data;
}
假设 input.txt 是上面的文件,我希望 lineToParse 是“数字:654”,数据是 654。 但正如我所说,我无法通过这种方式控制行的格式。
有什么想法吗?
【问题讨论】:
-
你试过什么?您是否尝试过使用
<fstream>打开文本文件并阅读它? -
std::getline可能迟早会进入您的代码。 -
编辑我的问题以使其更清晰:我以“ifstream”的形式打开并读取文件,并使用“std::getline”检索了第一行。
-
你需要一个这样的 while 循环:
while (std::getline(inputFile, lineToParse)) {然后按照@WhozCraig 所说的在循环中使用 lineToParse。