如何检查流中文件的下一个单词是否为 alpha?

How do I check if next word from a file in stream isalpha?

本文关键字:单词 下一个 是否 alpha 文件 中文 何检查 检查      更新时间:2023-10-16

我有一个文件,InputFile.txt,格式为firstnamelastnamescore

Mike Smith 80
James Jones 75

我想使用 ifStream& 将这些值读入我的 c++ 程序中。我是这样做的:

std::ifstream inStream("InputFile.txt");
std::string firstname;
std::string lastname;
int score;
while(inStream.peek() != EOF)
{
inStream >> firstname >> lastname >> score;
//further processing ignored for brevity...
}

我想检查firstnamelastname是否isalpha() == truescore是否都是数字(可能带有isdigit().

以下方法不起作用:

while (inStream >> firstname)
{
for (auto element : firstname)
{
if (!isalpha(element))
{
std::cerr << "Error not a alpha character.";
}
}
}

最简单的方法是什么?

可以直接写

while (inStream >> fname >> lname >> score)
{
//further processing ignored for brevity...
}

当且仅当成功读取整个语句时,它将计算为隐式 true。 也就是说,您不需要验证这里的score是否为数字。它将读作一个数字。

至于fnamelname的问题,我建议检查一下

inline bool is_alpha(const std::string& s) noexcept {
return std::find_if_not(s.begin(), s.end(),
[](unsigned char c) { return std::isalpha(c); }) == s.end();
}