C++ C++;只读取一行中的字符

C++ C++;只读取一行中的字符,c++,end-of-line,C++,End Of Line,我只想读取文件第一行中的字符,然后停止。 以下代码在代码块中不工作,因为输出文件为空。 我做错了什么 #include <fstream> using namespace std; ifstream cin ("test.in"); ofstream cout ("test.out"); char s; int main() { while (cin>>s) if (s=='\n') { cout<<"end of line"; return 0; } ret

我只想读取文件第一行中的字符,然后停止。 以下代码在代码块中不工作,因为输出文件为空。 我做错了什么

#include <fstream>
using namespace std;
ifstream cin ("test.in");
ofstream cout ("test.out");
char s;
int main()
{
while (cin>>s)
if (s=='\n')
{
cout<<"end of line"; return 0;
}
return 0;
}
#包括
使用名称空间std;
ifstream cin(“test.in”);
流法院(“test.out”);
字符s;
int main()
{
而(cin>>s)
如果(s=='\n')
{

您的代码可能有很多问题,但使其无法工作的一个问题是,
>
不能用于读取空白字符,它们只是被此运算符忽略,因此
s
永远不会等于
'\n'

幸运的是,想要读取一行代码是一个非常常见的要求,并且已经有一个函数
getline
可以做到这一点。下面是您的程序重写,以使用
getline
,并修复所有其他各种问题

#include <fstream>
#include <string>

int main()
{
    std::ifstream in("test.in");
    std::ofstream out("test.out");
    std::string line;
    if (getline(in, line))
        out << "end of line\n"; 
    return 0;
}
#包括
#包括
int main()
{
标准::ifstream-in(“test.in”);
标准:流出流(“测试输出”);
std::字符串行;
if(getline(in,line))

你不可能抓住这样一行的结尾。看看
getline
Try
std::string-line;std::getline(std::cin,line);
这里有一个完整的例子:谢谢。Getline不起作用,因为该行的字符数太高,我已经超出了代码运行的时间限制。您的行大小是多少?1000000个字符谢谢,但是.Getline不起作用,因为该行的字符数太高,我已经超出了运行时间限制代码的限制为run@Abacus不是getline导致您的时间限制被超过,而是您的代码的其余部分。@Abacus,在任何情况下,是什么让您认为一次读取一个字符会更快?谢谢您的回答,我将使用getline再试一次。但是,没有其他方法可以逐个读取字符e直到行尾?@Abacus您可以在.get()中使用
in
,它将只读取一个字符,即使它是空白字符。