首页 > 解决方案 > C++ 只读取一行字符

问题描述

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

#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;
}

标签: c++end-of-line

解决方案


您的代码存在许多问题,但阻止它工作的问题是>>不能用于读取空白字符,它们只是被此运算符忽略,因此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;
}

推荐阅读