C++ getline 在 Windows 中读取整个文件

2024-04-05

这看起来像一个类似的问题this one https://stackoverflow.com/questions/12152311/c-getline-reads-entire-file,但是我认为我的情况实际上可能有点不同。代码如下:

void readOmronResults(string fileName)
{
    ifstream inFile(fileName);
    ofstream testRead("test_read.txt");

    string line;
    //getline(inFile, line);
    //cout << line << endl;
    while (getline(inFile, line))
    {
        testRead << line << endl;
    }


    inFile.close();
    testRead.close();

    cout << "Finished reading omron results" << endl;
}

testRead仅用于调试。输入文件是一个 .csv 文件,如下所示:

    IMAGE,RIGHT_EYE_IN_X,RIGHT_EYE_IN_Y,RIGHT_EYE_OUT_X,RIGHT_EYE_OUT_Y,LEFT_EYE_IN_X,LEFT_EYE_IN_Y,LEFT_EYE_OUT_X,LEFT_EYE_OUT_Y
    0001_2m_-15P_-10V_-10H,2386,1627,2171,1613,2754,1623,3009,1583
    0001_2m_-15P_-10V_-15H,2377,1620,2171,1606,2750,1611,3003,1574
    0001_2m_-15P_-10V_-5H,2376,1614,2166,1599,2752,1609,3012,1577
           ...

如果我运行上面的代码,test_read.txt 中的输出与输入文件中的输出完全相同。但是,如果我恢复这两行注释掉的行,控制台窗口将显示输入文件中的所有行(从第二行开始重复),并且 test_read.txt 为空。从链接的帖子中我猜想这可能与不同操作系统中行结尾的差异有关。我的操作系统是 Windows,根据我的文本编辑器,原始输入文件是 Mac-OS 风格。但如果是因为这个,为什么原来的代码(注释掉这两行)能够给出正确的结果呢?

我的IDE是Visual Studio 2012,我的机器是64位。


我的操作系统是 Windows,根据我的文本编辑器,原始输入文件是 Mac-OS 风格。

是的,这就是问题所在。 Windows 的 C 和 C++ 标准库将假定文本文件使用 Windows 行结尾,U+0D U+0A.

对于文本编辑器来说,说“Mac OS 风格”是一件奇怪的事情,因为另一行以常用结尾U+0A这是包括 Linux 在内的整个 Unix 系列所共有的。很久以前,Mac 操作系统使用U+0D这使得“Mac OS 风格”这个短语变得模糊且不合时宜。

但如果是因为这个,为什么原来的代码(注释掉这两行)能够给出正确的结果呢?

事实并非如此。该程序的两个版本都将文件视为包含很长的一行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ getline 在 Windows 中读取整个文件 的相关文章

  • 我应该把 try/catch 和“using”语句放在哪里? [复制]

    这个问题在这里已经有答案了 可能的重复 try catch using 正确的语法 https stackoverflow com questions 4590490 try catch using right syntax 我想try c
  • 编写此代码片段的有效方法是什么? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 更有效和 或更短地重写此代码以节省字节并显得不那么冗长的方法 if N 2 0 N 6 N 8 N 10 N 12 N 14 N 16 N
  • 元组在 VS2012 中如何工作?

    Visual Studio 2012 功能 tuples但不是可变参数模板 这是如何完成的 如何在不使用可变模板的情况下实现元组 简而言之 微软做了与之前在 NET 中实现类似元组的数据类型完全相同的事情 创建许多版本 每个版本都有固定数量
  • 并行化斐波那契序列生成器

    我正在学习并行化 在一项练习中 我得到了一些我应该提高性能的算法 其中之一是斐波那契数列生成器 array 0 0 array 1 1 for q 2 q lt MAX q array q array q 1 array q 2 我怀疑 这
  • 异常堆栈跟踪不显示抛出异常的位置

    通常 当我抛出异常 捕获它并打印出堆栈跟踪时 我会看到抛出异常的调用 导致该异常的调用 导致该异常的调用that 依此类推回到整个程序的根 现在它只向我显示异常所在的调用caught 而不是它所在的地方thrown 我不明白是什么改变导致了
  • 将设置函数(setter)标记为 constexpr 的目的是什么? [复制]

    这个问题在这里已经有答案了 我无法理解将 setter 函数标记为的目的constexpr 自 C 14 起这是允许的 我的误解来自以下情况 我使用 constexpr c tor 声明一个类 并且我将通过创建该类的 constexpr 实
  • 如何以编程方式播放 16 位 pcm 数组 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有一个包含 16 位 pcm 值的短 数组 我希望能够在不添加任何标题 也不将任何文件保存到内存的情况下播放它 我知道我可能需要一个提供
  • 静态类与类的实例

    我有一个静态类 用于访问我的公共属性 整个应用程序的全局属性 和我在应用程序运行期间使用的方法 例如 我在静态类中设置了一些属性 并且在应用程序运行时我可以从属性中获取值 但我可以使用单例模式创建非静态类并以相同的方式使用它 问题 对于我的
  • 用于连接 DataTable 上的动态列的动态 LINQ

    我目前遇到的情况不确定如何继续 我有两个从数据库填充的数据表 我还有一个可用的列名称列表 可用于将这两个数据表连接在一起 我希望编写一组 LINQ 查询 这些查询将 显示两个数据表中的行 内部联接 用于从一个数据表更新另一个数据表 显示一个
  • Resharper:IEnumerable 的可能多重枚举

    我正在使用新的 Resharper 版本 6 在我的代码中的几个地方 它给一些文本加了下划线 并警告我可能存在IEnumerable 可能的多重枚举 我理解这意味着什么 并在适当的情况下采纳了建议 但在某些情况下 我不确定这实际上是一个大问
  • 为什么 f(i = -1, i = -1) 是未定义的行为?

    我正在读关于违反评估顺序 http en cppreference com w cpp language eval order 他们举了一个令我困惑的例子 1 如果标量对象上的副作用相对于同一标量对象上的另一个副作用是无序的 则行为未定义
  • 无法在 C# 中为 EventArgs 分配使用派生类型的事件处理程序

    所以我有一个事件声明如下 public event EventHandler OnChangeDetected 然后我有以下处理程序被分配给该事件 myObject OnChangeDetected OnTableChanged 我的理解是
  • 使用 xslt 将 xml 转换为 xsl-fo 时动态创建超链接?

    我想使用 xsl 文件在 PDF 报告中创建标题 如果源文件包含超链接 则应将其呈现为超链接 否则呈现为纯文本 例如 我的 xml 如下所示 a href http google com target blank This is the h
  • C 中使用 getrandom 实现随机浮点数

    我试图生成一个介于 0 和 1 之间的随机浮点数 无论是在 0 1 还是 0 1 对我来说都不重要 网上关于此的每个问题似乎都涉及rand 呼叫 播种time NULL 但我希望能够每秒多次调用我的程序 并每次都获得不同的随机数 这引导我找
  • Xamarin.Forms UWP 项目中标题栏和选项卡之间令人恼火的空白

    我几乎是新手Xamarin Forms我正在开发一个相当简单的跨平台应用程序 该应用程序在 Android 中显示得足够好 但在 UWP 中却出现了一个愚蠢的空白 该项目由一个 TabbedPage 组成 其中包含 4 个 Navigati
  • “必须声明标量变量”错误[重复]

    这个问题在这里已经有答案了 必须声明标量变量 Id SqlConnection con new SqlConnection connectionstring con Open SqlCommand cmd new SqlCommand cm
  • printf或iostream如何指定点后的最大位数

    字符串采用什么格式printf or iomanip我应该使用 iostream 中的运算符以以下格式打印浮点数 125 0 gt 125 125 1 gt 125 1 125 12312 gt 125 12 1 12345 gt 1 12
  • 如果“嵌入式”SQL 2008 数据库文件不存在,如何创建它?

    我使用 C ADO Net 和在 Server Management Studio 中创建的嵌入式 MS SQL 2008 数据库文件 附加到 MS SQL 2008 Express 创建了一个数据库应用程序 有人可以向我指出一个资源 该资
  • 将 char 绑定到枚举类型

    我有一段与此非常相似的代码 class someclass public enum Section START MID END vector section Full void ex for int i 0 i section
  • 如何提高环复杂度?

    对于具有大量决策语句 包括 if while for 语句 的方法 循环复杂度会很高 那么我们该如何改进呢 我正在处理一个大项目 我应该减少 CC gt 10 的方法的 CC 并且有很多方法都存在这个问题 下面我将列出一些例如我遇到的问题的

随机推荐

  • R 并排分组箱线图

    我有两种植物气体排放的时间数据 这两种植物都经过了相同的处理 和一些以前的帮助 https stackoverflow com questions 23848186 unify boxplot factor group colours 23
  • Oauth 2.0 - 单个资源服务器但多个客户端应用程序

    问候 我想问以下是否是 Oauth 2 0 的有效用例 授权服务器 单独 单个 或多个 资源服务器 多个客户端应用程序访问同一资源服务器 如果这是一个有效的用例 我们如何使用授权服务器配置多个客户端 无法使用 application pro
  • 如何用 SUBSTITUTE 公式替换 Excel 中的引号?

    我有工作表 其中需要命名范围来对应于另一个单元格的内容 单元格中的文本类似于 Partitions w Studs 16 oc 命名范围不能包含空格 或者最重要的是 不能包含 等特殊字符 因此 该范围的命名如下 PartitionswStu
  • clojure lein(读取行)stdin 问题

    所以常规的 clojure repl 工作得很好 read line 收集输入 然后回显它 使用lein repl但是 它永远不会回显任何输入字符 也不允许我从任何标准输入读取命令返回 我确信这与重新绑定有关in 但想知道是否有解决方法 修
  • Tablayout+view 分页器未在位置 0 显示片段

    我的应用程序有 2 个选项卡 具有两种不同的布局 当我运行应用程序时 应该在 tab1 位置 0 中显示的片段显示在 tab2 中 而应该在 tab2 位置 1 中显示的片段没有显示 此外 当我滑动屏幕时 选项卡布局中的选项卡焦点不会改变
  • PDF - 设置受密码保护的打印、复制、粘贴选项?

    我正在寻找一个 Python 库 它允许我在现有 PDF 文件上设置受密码保护的打印 复制 粘贴选项 我尝试过的 我查看了reportlab pdfencrypt模块 这正是我需要的选项 但是开源版本受到严格限制 甚至无法设置真正的密码 并
  • iOs(CoreLocation)-locationManager:didUpdateLocations:未按预期工作

    我编写了一个简单的 iPhone 应用程序 用于检索位置信息并简单地显示它们 我想增加distanceTraveled每次位置改变时都会变量 我的问题是在方法中locationManager CLLocationManager manage
  • 对.net中多重继承的质疑

    我们知道 net中所有的类都是继承自对象类的 假设我们创建一个名为 ClassA 的类 然后我们创建另一个类 名为ClassB 它继承自ClassA 这不是多重继承吗 因为ClassB同时继承自Object类和ClassA 这不是违反了C
  • 如何以编程方式从 Office 文件中提取和操作图像?

    如何从 PowerPoint 和 Word 文档中提取一些图像 以便对其进行操作 然后将图像放回 MS Office 文件中 Apache 有一个名为 POI 的项目 专门用于与 Java 中的 MS Office 格式进行交互 希望这对你
  • 从 cygwin bash 成功克隆后,本地 Git 存储库不存在

    当我克隆到通过绝对路径引用的目录 不存在 时 git 不会抱怨任何事情 报告 0 退出代码 但目录是not创建的 Git 遵守目录do当我重试时存在 user host tmp git clone https github com zand
  • com.mongodb.MongoSocketOpenException:打开套接字时出现异常(MongoDB、Docker)

    我尝试使用 docker 映像启动我的应用程序 Spring Boot Spring Cloud Eureka MongoDB 但无法连接到 MongoDB 例外 exception com mongodb MongoSocketOpenE
  • 解决电力塔

    a 2 Power 10 6 10 9 3 Power 4 9 7 5 TwoTower n Nest 2 1 n 最小的是什么n这样TwoTower n gt a This question http www quora com How
  • 如何给 git 仓库命名?

    我正在使用这些命令创建远程仓库 mkdir NewRepo cd NewRepo git init 然后我将此存储库克隆到本地 git clone user server path to app git 这对我有用 但我想给仓库命名 像其他
  • 我如何监听所有具有参数化名称的 Seam 上下文事件?

    接缝会起火不同类型的事件 http docs jboss org seam latest reference en US html events html d0e5252与特定范围 任务或流程相关 并将范围 任务或流程的名称附加到事件末尾
  • 获取两个给定日期之间的 SUM

    如果我想获得一定日期范围内的总消耗量 我该怎么做 我想我可以这样做 SELECT id SUM consumption FROM consumption info WHERE date time BETWEEN 2013 09 15 AND
  • 在 Java 中使用 Visual Studio Code 的 Azure Functions 项目

    我正在尝试使用 VSCode 创建 azure 函数并将其部署到 azure 我按照官方文档的描述进行操作 https learn microsoft com en us azure azure functions functions cr
  • 即使数据没有改变,useEffect也会多次渲染

    如果依赖项数组为空 则此 useEffect 将渲染一次 但如果我将folderRef 放入依赖项数组 则此 useEffect 将渲染多次 我只想在添加或删除某些文件夹时渲染组件 请帮忙 import React useState use
  • 滑动删除不显示删除按钮

    我肯定在这里遗漏了一些东西 这应该没那么难 我正在尝试在 iPad 上的 UITableView 中的项目列表上实现基本的滑动删除功能 一切似乎都正常 除了当单元格向左滑动时没有删除按钮 只有空白区域 以下是我在适当功能中的内容 BOOL
  • 使用 tree-model-js 将树转换回 JSON

    是否有一种方法可以将 TreeModel 转换为 JSON 字符串 这样它就可以被存储 然后使用tree parse 目前在尝试时JSON stringify root 它给出了关于循环引用的明显错误 因为子级包含父级 父级包含子级 Use
  • C++ getline 在 Windows 中读取整个文件

    这看起来像一个类似的问题this one https stackoverflow com questions 12152311 c getline reads entire file 但是我认为我的情况实际上可能有点不同 代码如下 void