如何测试一行是否为空?
How to test if a line is empty?
我实际上是想了解 getline()
函数是如何工作的!但是我在测试一行是否为空时遇到了困难!
这是我的代码:
ifstream fichier("upload.txt",ios::binary);
string ligne;
while(getline(fichier,ligne))
{
cout<<ligne<<endl;
if(ligne=="")
cout<<"line below is empty"<<endl;
}
但是,if 条件似乎不起作用:((
您的问题是打开二进制文件。除此之外,你应该做一些事情:
- 检查文件是否正常打开
- 与 empty() 比较
- 检查字符串是否只包含 space ,然后它被认为是空的。
关闭文件
ifstream fichier("upload.txt", std::ifstream::in ); //File opened for reading.
string ligne;
//Always Check if file is properly opened.
if (fichier.is_open() )
{
while(getline(fichier,ligne))
{
cout<<ligne<<endl;
if(ligne.empty() || str.find_first_not_of(' ') == std::string::npos)
cout<<"line below is empty"<<endl;
}
fichier.close();
}
else
{
// show message:
std::cout << "Error opening file";
}
在 Windows 上,换行符通常是 CRLF (0x0D 0x0A
)。 std::getline()
将读取直到遇到 LF 并将其从返回的 std::string
中丢弃。如果 std::ifstream
以文本模式(默认模式)打开,平台换行符将标准化为 LF 并且前导 CR 也将被丢弃。但是,如果以二进制模式打开,CR 将不会被丢弃。所以你必须检查一下:
ifstream fichier("upload.txt", ios::binary);
string ligne;
while (getline(fichier, ligne)) {
if (ligne.empty() || ligne == "\r") {
cout << "line is empty" << endl;
} else {
cout << ligne << endl;
}
}
否则,不要对文本文件使用二进制模式:
ifstream fichier("upload.txt");
string ligne;
while (getline(fichier, ligne)) {
if (ligne.empty()) {
cout << "line is empty" << endl;
} else {
cout << ligne << endl;
}
}
我实际上是想了解 getline()
函数是如何工作的!但是我在测试一行是否为空时遇到了困难!
这是我的代码:
ifstream fichier("upload.txt",ios::binary);
string ligne;
while(getline(fichier,ligne))
{
cout<<ligne<<endl;
if(ligne=="")
cout<<"line below is empty"<<endl;
}
但是,if 条件似乎不起作用:((
您的问题是打开二进制文件。除此之外,你应该做一些事情:
- 检查文件是否正常打开
- 与 empty() 比较
- 检查字符串是否只包含 space ,然后它被认为是空的。
关闭文件
ifstream fichier("upload.txt", std::ifstream::in ); //File opened for reading. string ligne; //Always Check if file is properly opened. if (fichier.is_open() ) { while(getline(fichier,ligne)) { cout<<ligne<<endl; if(ligne.empty() || str.find_first_not_of(' ') == std::string::npos) cout<<"line below is empty"<<endl; } fichier.close(); } else { // show message: std::cout << "Error opening file"; }
在 Windows 上,换行符通常是 CRLF (0x0D 0x0A
)。 std::getline()
将读取直到遇到 LF 并将其从返回的 std::string
中丢弃。如果 std::ifstream
以文本模式(默认模式)打开,平台换行符将标准化为 LF 并且前导 CR 也将被丢弃。但是,如果以二进制模式打开,CR 将不会被丢弃。所以你必须检查一下:
ifstream fichier("upload.txt", ios::binary);
string ligne;
while (getline(fichier, ligne)) {
if (ligne.empty() || ligne == "\r") {
cout << "line is empty" << endl;
} else {
cout << ligne << endl;
}
}
否则,不要对文本文件使用二进制模式:
ifstream fichier("upload.txt");
string ligne;
while (getline(fichier, ligne)) {
if (ligne.empty()) {
cout << "line is empty" << endl;
} else {
cout << ligne << endl;
}
}