• C++ 解析CSV文件


    1.XCFileStream的ReadData基本能用,需要加个 if(__ptr == '') break 的判断。(此时字符集为 未设置,假如是unicode编译不过)

    WriteData 已做测试,可用。只能写入xxx.csv文件,不能直接写入Excel文件,Excel文件需要Office接口才能写.

    优化:可以只读某几行的内容。

    注意:

    在简体中文环境下,EXCEL打开的CSV文件默认是ANSI编码,如果CSV文件的编码方式为utf-8、Unicode等编码可能就会出现文件乱码的情况。

    2.读取配置文件内容

    配置文件内容如下:

    [COLOR]

    TOOLBAR_BG = "#ABCDEF"

    dlgback = 2000

    TCHAR szFileName[256];

    ::GetModuleFileName(NULL, szFileName, 256);

    CString strFileName = szFileName;

    strFileName.Replace(".exe", ".ini");

    TCHAR cBuf[32] = {0};

    CString strContent;

    int num = 0;

    //读取字符串

    num = ::GetPrivateProfileString("COLOR", "TOOLBAR_BG", "D8E9EC", cBuf, sizeof(cBuf), strFileName);

    strContent = cBuf;

    //读取数字

    int color = ::GetPrivateProfileInt("COLOR", "dlgbak", "12345", strFileName);

    3.获取指定文件夹中的所有文件名(递归获取)

    1>弹出 选择文件夹对话框,获取到文件夹路径

    2>朴素贝叶斯算法

    void BayesCategoryTest(CString tp)

    {

      CString szPath = tp;

      szPath += _T("\*.*"); //搜索所有文件,假如是想只搜索本级目录下的csv,则改为*.csv

      

      CFileFind fd;

      BOOL bFind = fd.FindFile(szPath);

      while(bFind)

      {

        bFind = fd.FindNextFile();

        if (fd.IsDirectory() && !fd.IsDots()) //是目录则递归

        {

          BayesCategory(fd.GetFilePath());

        }

        else //再判断是否为*.csv文件

        {

          CString fileName = fd.GetFileName();

          int dotPos = fileName.ReverseFind('.');

          CString fileExt = fileName.Right(fileName.GetLength() - dotPos);

          if (fileExt == _T(".csv")) //若是csv文件,则保存在vector中

          {

            m_vecStr.push_back(fileName);

          }

        }

      }

      

    }

  • 相关阅读:
    (转帖) oracle是否归档模式及修改模式
    (转帖) Oracle实例恢复(Oracle instance recovery)
    实习第一周总结
    UML类图几种关系的总结
    表格排序
    利用js查找页面中的内链,外链
    事件机制(事件冒泡与事件捕获)
    谈 CSS 模块化
    初学后台框架总结篇二——快速了解CI框架
    初学后台框架总结篇一——学习过程
  • 原文地址:https://www.cnblogs.com/sylar-liang/p/5411765.html
Copyright © 2020-2023  润新知