C++ 从文件中计算新行数无法正常工作

C++ 从文件中计算新行数无法正常工作,c++,C++,我试图从我的文件中数新行,但似乎不起作用。当有1个新行时,它给我结果0。我怎样才能解决这个问题 getline(file, newstring); char line; int lines = 0; for (int i = 0; i < newstring.length(); i++) { if(line== '\n') { lines++; } } cout << lines; getline读取整行数据,但只读取一行;它被称为

我试图从我的文件中数新行,但似乎不起作用。当有1个新行时,它给我结果0。我怎样才能解决这个问题

getline(file, newstring);
char line;
int lines = 0;
for (int i = 0; i < newstring.length(); i++)
{

    if(line== '\n')
    {
        lines++;
    }

}
cout << lines;
getline读取整行数据,但只读取一行;它被称为getline,不是getlines直到行终止字符,但结果不包括该终止符

您不需要查看字符串内部,只需计算std::getline成功的次数

int lines = 0;
while (getline(file, newstring))
{
    lines++;
}
cout << lines;
getline读取整行数据,但只读取一行;它被称为getline,不是getlines直到行终止字符,但结果不包括该终止符

您不需要查看字符串内部,只需计算std::getline成功的次数

int lines = 0;
while (getline(file, newstring))
{
    lines++;
}
cout << lines;

据我所知,这也可能提供您所需的:

包括 包括


这将计算11个新行字符。

据我所知,这也可能提供您所需要的:

包括 包括


这将计算11个新行字符。

您从未为行分配任何值我需要为它分配什么?我试过char line='\n'不起作用。@debooger3如果不更改line的值,line='\n'怎么可能为真?如果你想知道新闻字符串包含什么,你不需要检查它吗?@debooger3 getline读取一行,其中包括结尾的换行符,但它不在返回的字符串中包含该换行符。所以你的方法行不通。但是由于getline总是读取一行,那么您到底想要完成什么?您从未为line分配任何值我需要为它分配什么?我试过char line='\n'不起作用。@debooger3如果不更改line的值,line='\n'怎么可能为真?如果你想知道新闻字符串包含什么,你不需要检查它吗?@debooger3 getline读取一行,其中包括结尾的换行符,但它不在返回的字符串中包含该换行符。所以你的方法行不通。但是由于getline总是读取一行,那么您到底想要完成什么呢?除此之外,如果newString只在while循环中使用,并且在之前或之后都不需要,那么最好使用for循环,例如:for std::string newString;std::getlinefile,新闻字符串;除此之外,如果newString只在while循环中使用,并且在之前或之后都不需要,那么最好使用for循环,例如:for std::string newString;std::getlinefile,新闻字符串;所以那个新闻串后来被销毁了。回答得很好。在C++17中,您可以用{}替换std::istreambuf_迭代器。太好了,谢谢,我已经添加了您的建议,以便更直观。非常好的答案。在C++17中,您可以用{}替换std::istreambuf_迭代器。太好了,谢谢,我添加了您的建议,以便更直观