c++ - 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;
}
解决方案
您的代码存在许多问题,但阻止它工作的问题是>>
不能用于读取空白字符,它们只是被此运算符忽略,因此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;
}
推荐阅读
- laravel - Laravel 5 使用 2 个数据库连接加入 2 个表
- python - 在python中随机化快速排序,递归问题
- android - google/android/gms/maps/model/LatLng 的 NoSuchMethodError
- report - 使用 Oracle APEX 5 编辑交互式报表中的行
- apache-spark - 运行结构化流式传输示例“WARN NetworkClient: Bootstrap broker ip-10-28-3-35.ec2.internal:2181 disconnected”时出错
- java - sqlite中的复合索引
- selenium - 使用 Robot Framework 的 Selenium2Library 测试电子应用程序
- c# - stimulsoft 报告是否适用于 exe 文件?
- css - 在运行时为 Angular 应用程序设计样式
- python-3.x - 名称分数项目 euler #22