C++ 如何在c++;11?
如何在c++11中检测istream中的空行 有没有一个简单的方法,否则我将不得不这样做 删除空格和制表符,然后查看结果字符串是否为空C++ 如何在c++;11?,c++,c++11,C++,C++11,如何在c++11中检测istream中的空行 有没有一个简单的方法,否则我将不得不这样做 删除空格和制表符,然后查看结果字符串是否为空 是空的吗?@Nawaz为什么不是?哦,我猜他想要只包含空格的行。是的,我也想检测这样的空行,它们只包含空格和制表符…我更喜欢以前的版本!你为什么要把它分成单独的谓词(@user311311311311因为传递给std::isblank的参数必须在0..UCHAR_MAX的范围内,但是char可以签名,所以需要unsigned char转换来防止出现未定义行为的情
是空的吗?@Nawaz为什么不是?哦,我猜他想要只包含空格的行。是的,我也想检测这样的空行,它们只包含空格和制表符…我更喜欢以前的版本!你为什么要把它分成单独的谓词(@user311311311311因为传递给
std::isblank
的参数必须在0..UCHAR_MAX
的范围内,但是char
可以签名,所以需要unsigned char
转换来防止出现未定义行为的情况。@Nawaz为什么不呢?哦,我想他只需要有空格的行来计数。是的,我也想检测这样的空行,只包含空格和制表符…我更喜欢上一个版本!为什么要将它分离为单独的谓词(@user311311311,因为传递给std::isblank
的参数必须在0..UCHAR_MAX
范围内,但是char
可以签名,因此需要unsigned char
转换以防止出现未定义行为的情况。“检测”然后呢?你可以更清楚地了解你的需求。太棒了。好吧,把它放在需求文档中,我们就从那里开始。“检测”然后呢?你可以更清楚地了解你的需求。太棒了。好吧,把它放在需求文档中,我们就从那里开始。
std::string s;
if (!std::getline(in, s)) {
// There wasn't another line.
}
auto pred = [](unsigned char const c) { return std::isblank(c); };
if (std::all_of(s.begin(), s.end(), pred)) {
// This line was empty.
}