我想知道如何检查getline
函数是否允许string buffer
和ifstream
输入: getline(input, buffer)
,存储一个空行?
所以我想说:
Hello
How are you
那么,如果我正在处理换行符,我如何根据string buffer
进行识别?我需要这个来在更复杂的文件中进行格式化检查。感谢。
答案 0 :(得分:1)
获得string buffer
后,您可以查看:
if (get_trimmed_string(buffer).length == 0)
{
// this line is a blank line, or contains only spaces/tabs
}
修剪空格或制表符的功能可以是:
// delete spaces/tabs in head and tail of str
string get_trimmed_string(string str)
{
int s=str.find_first_not_of(" \t");
int e=str.find_last_not_of(" \t");
// if do find real content
if (s!=-1 && e!=-1)
return str.substr(s, e-s+1);
return "";
}
答案 1 :(得分:1)
添加一个函数来检查它是否只有空格字符。
#include <iostream>
#include <string>
bool isBlankLine(char const* line)
{
for ( char const* cp = line; *cp; ++cp )
{
if ( !isspace(*cp) ) return false;
}
return true;
}
bool isBlankLine(std::string const& line)
{
return isBlankLine(line.c_str());
}
int main()
{
std::string s1 = "Hello";
std::string s2 = " ";
std::string s3 = "How are you";
std::cout << "Is s1 blank? " << isBlankLine(s1) << std::endl;
std::cout << "Is s2 blank? " << isBlankLine(s2) << std::endl;
std::cout << "Is s3 blank? " << isBlankLine(s3) << std::endl;
return 0;
}
这是输出:
Is s1 blank? 0 Is s2 blank? 1 Is s3 blank? 0