我有一个文件,InputFile.txt,格式为firstname
,lastname
,score
:
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...
}
我想检查firstname
和lastname
是否isalpha() == true
,score
是否都是数字(可能带有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
是否为数字。它将读作一个数字。
至于fname
和lname
的问题,我建议检查一下
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();
}