从 C++ 中带引号的 CSV/文本文件读取

2024-01-03

我有一个从文本文件(CSV)中读取行的工作函数,但我需要修改它以便能够读取双引号(我需要这些双引号,因为我的一些字符串值包含逗号,所以我使用双引号表示读取函数应忽略双引号之间的逗号)。是否有一种相对简单的方法来修改下面的函数以适应某些字段将用双引号括起来的事实?

其他一些注意事项:

  1. 如果有帮助的话,我可以很容易地将所有字段用双引号括起来(而不仅仅是字符串字段,就像目前的情况一样)

  2. 我还可以很容易地将分隔符从逗号更改为其他字符(如管道),但希望坚持使用 CSV(如果这样做很容易的话)

这是我当前的功能:

void ReadLoanData(vector<ModelLoanData>& mLoan, int dealnum) {

// Variable declarations
fstream InputFile;
string CurFileName;
ostringstream s1;
string CurLineContents;
int LineCounter;
char * cstr;
vector<string> currow;
const char * delim = ",";

s1 << "ModelLoanData" << dealnum << ".csv";
CurFileName = s1.str();
InputFile.open(CurFileName, ios::in);

if (InputFile.is_open()) {

    LineCounter = 1;
    while (InputFile.good()) {
        // Grab the line
        while (getline (InputFile, CurLineContents)) {

            // Create a c-style string so we can tokenize
            cstr = new char [CurLineContents.length()+1];
            strcpy (cstr, CurLineContents.c_str());

            // Need to resolve the "blank" token issue (strtok vs. strsep)
            currow = split(cstr,delim);

            // Assign the values to our model loan data object
            mLoan[LineCounter] = AssignLoanData(currow);

            delete[] cstr;
            ++LineCounter;
        }   
    }
    // Close the input file
    InputFile.close();
}
else
    cout << "Error: File Did Not Open" << endl;

}


以下适用于给定的输入:a,b,c,"a,b,c","a,b",d,e,f

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main() {
    std::string line;
    while(std::getline(cin, line, '"')) {
        std::stringstream ss(line);
        while(std::getline(ss, line, ',')) {
            cout << line << endl;
        }
        if(std::getline(cin, line, '"')) {
            cout << line;
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 C++ 中带引号的 CSV/文本文件读取 的相关文章

随机推荐

  • 如何一步构建带有子工厂的父工厂以通过验证

    项目必须同时创建至少一项任务 以确保验证通过 这是我用来验证这一点的片段 class Project lt ActiveRecord Base validates tasks length gt minimum gt 1 end 我面临的挑
  • 在 Angular 中使用 Http 进行 Observable 的好处

    从这里 https stackoverflow com a 40135509 462608 https stackoverflow com a 40135509 462608 首先 这个答案描述了 Observables 如何有助于防止向服
  • Datagridview 全行选择但获取单个单元格值

    我有一个完整行选择的 datagridview 无论单击行中的哪个单元格 我如何仅从某个单元格获取数据 因为它突出显示了整行 你可以这样做 private void datagridview1 SelectionChanged object
  • PIL 的 fromarray() 函数中的动态范围(位深度)?

    我对 12 位相机的多帧 TIFF 图像进行了一些图像处理 并希望保存输出 但是 那PIL 文档 https pillow readthedocs io en stable handbook concepts html concept mo
  • Python 中带负指数的多项式

    当多项式可以有负指数时 是否有一个库可以处理多项式算术 我找到了poly1d http docs scipy org doc numpy reference generated numpy poly1d htmlnumpy 中的类 但我无法
  • 无法执行 BACKUP LOG,因为没有当前数据库备份

    我尝试恢复数据库 但显示了此消息 我如何恢复这个数据库 数据库 farhangi db 恢复失败 Microsoft SqlServer Management RelationalEngineTasks 附加信息 System Data S
  • 无法运行Xamarin Android项目

    尝试使用所有默认值创建并运行第一个 Xamarin 应用程序时 构建失败并出现以下错误 An unexpected error occurred trying to initialize Android Designer Please ve
  • 在 Vegan 中使用 metaMDS() 没有稳定的解决方案[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我有一个物种丰度数据集 其中有很多零 即使我设置trymax 1000 for metaMDS 该程序无法找到压力的稳定解决方案 我已经尝试过合并数据
  • PHP 加密与 iOS 和 .NET 的区别

    我在 iOS 和 PHP 之间进行加密通信时遇到问题 我有一个应用程序 可以加密字符串并将其发送到 PHP 服务器进行解密 那部分工作得很好 现在 PHP 服务器需要将加密的响应发送回应用程序 这似乎导致了一些问题 更多白发 问题是 当我在
  • 使用 Google Appengine 和 Java 删除 .html 扩展名

    我在这里感到非常困惑 我一直在为我们的网络服务器使用 Google Appengine 到目前为止效果很好 但我有一个请求 要求加载不带 html 扩展名的网页 我一直在阅读一些内容 发现我需要创建一个app yaml文件将 url 映射到
  • Azure 数据工厂发布管道 - 找不到资源错误

    我正在测试一个非常简单的 ADF 只有一个活动 的构建 发布 构建 存储库 arm 模板导出似乎都正常 直到我运行发布任务时 错误出现在最后一步 即 error code ResourceNotFound message The Resou
  • 哪个 Java 访问修饰符允许成员只能由其他包中的子类访问? [复制]

    这个问题在这里已经有答案了 我不得不把标题缩短一点 这是完整的问题 在Java中 哪个访问修饰符允许成员只能由其他包中的子类或该成员类的包中的任何类访问 我在想protected但我的同事说答案是private 在Java中 哪个访问修饰符
  • 有没有办法获得 Apple 示例代码的旧版本? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 例如 我想查看 Leopard API 之前的版本HID 浏览器 http developer app
  • 将 SQL Server 数据库架构移植到 MySQL 的最佳方法

    将 SQL Server 数据库传输到 MYSQL 的最佳 最简单的方法是什么 The MySQL 图形用户界面工具 http dev mysql com downloads gui tools 5 0 html附带MySQL 迁移工具包这
  • 解释自加入

    我试图在网上了解自学 但找不到满意的解释 任何人都可以用一个例子来解释它 比如在哪里使用它以及为什么使用它 如果你能用查询来解释它就好了 维基百科的连接 SQL 页面有一个特定的关于自加入的条目 http en wikipedia org
  • 如何始终包含静态库中的符号?

    假设我有一个静态库 libx a 如何从这个库中制作一些符号 不是全部 always存在于我与我的库链接的任何二进制文件中吗 原因是我需要通过 dlopen dlsym 来使用这些符号 我知道 whole archive 链接器开关 但它强
  • 具有不同动态内容的小部件(Angular-Gridster)

    我正在尝试使用 Angular Gridster 模块创建基于 AngularJS 的 Web 仪表板 gridster 工作正常 我在将内容绑定到它时没有任何问题 例如使用 ng bind html 的文本或图像 但实际上我不想只向这些
  • 3D 绘图纵横比 [matplotlib]

    我正在使用编写的代码here https stackoverflow com a 15583431 4888158制作如下图所示的情节 问题是 我想调整纵横比 即沿 z 轴拉伸它 以便所有堆叠的图像或多或少可见 有没有一种简单的方法可以做到
  • 第二级 R 函数中的子集化

    功能foo1可以通过请求的变量对列表进行子集化 例如 by type 1 否则 foo1将简单地输出输入的列表本身 出于我的目的 我需要使用foo1在一个名为的新函数中foo2 在我下面的代码中 我想要的输出是这样获得的 foo2 data
  • 从 C++ 中带引号的 CSV/文本文件读取

    我有一个从文本文件 CSV 中读取行的工作函数 但我需要修改它以便能够读取双引号 我需要这些双引号 因为我的一些字符串值包含逗号 所以我使用双引号表示读取函数应忽略双引号之间的逗号 是否有一种相对简单的方法来修改下面的函数以适应某些字段将用