2021年7月7日 星期三

 

C++  文字串處理 (CSV檔)


(1) 從CSV檔中將將文字一行一行的讀出
(2) 把文字以逗號分割後,存入陣列再取出,再依需要轉換格式,文字或數字


Data.CSV

111,222,333
aaa,bbb,ccc
1.2,2.2,3.3

======================================================

#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>                                //陣列
using namespace std;

int main()
{
    ifstream inFile("Data.csv", ios::in);
    if (!inFile)
    {
        cout << "開啟檔案失敗!" << endl;
        exit(1);
    }   
    string line;  
    while (getline(inFile, line))//getline(inFile, line)表示按行讀取CSV檔案中的資料   
    {
        cout << "org=" << line << endl;       
    }
}




=============================================================


用函數來處理分割字串

vector<string> _csv(string s)
{
    vector<string> arr;
    istringstream delim(s);
    string token;
    int c = 0;
    while (getline(delim, token, ','))           
    {
        arr.push_back(token);                 
        c++;                                          
    }
    return  arr;
}


完整程式

-----------------------------------------


#include <iostream>
#include <fstream>
#include <sstream>
#include <string>
#include <vector>   //陣列
using namespace std;

vector<string> _csv(string s);

int main()
{
    ifstream inFile("Data.csv", ios::in);
    if (!inFile)
    {
        cout << "開啟檔案失敗!" << endl;
        exit(1);
    }   
    string line;  
    while (getline(inFile, line))
    {
        cout << "org=" << line << endl;   
        //========================
        vector<string> a = _csv(line);
        cout << "size=" << a.size() << endl;
        for (int ii = 0; ii < a.size(); ii++)
        {
            cout << a[ii] << ",";
        }
        cout << endl;
        //========================
    }
}


vector<string> _csv(string s)
{
    vector<string> arr;
    istringstream delim(s);
    string token;
    int c = 0;
    while (getline(delim, token, ','))        
    {
        arr.push_back(token);                
        c++;                                           
    }
    return  arr;
}

 學生體健系統 - 開始 

從零開始:

有人要做一套學生體檢的系統,試試看,可不可以紀錄自己的過程,寫下文章應該是很麻煩的,最麻煩的是要如何把自己的想法寫出來吧! # 2021/07/07 
慢慢開始吧!# 2021/07/07,23:30

 C# 讀寫 ini 檔案

使用 kernel32.DLL

引用:using System.Runtime.InteropServices; //DllImport

範例:


 class clsINI

    {

        [DllImport("kernel32")]

        private static extern bool WritePrivateProfileString(string section, string key, string def,  string filePath);

        [DllImport("kernel32")]

        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);


        private string iniFileName;

        //private bool bDisposed = false;


        public clsINI(string xfilepath)

        {

            iniFileName = xfilepath;

        }

        public void WriteIni(string section, string key, string val)

        {

            WritePrivateProfileString(section, key, val, iniFileName);

        }

        public string ReadIni(string section, string key)

        {

            StringBuilder temp = new StringBuilder(255);

            GetPrivateProfileString(section, key, "", temp, 255, iniFileName);

            return temp.ToString();

        }

    }


參考:

https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-writeprivateprofilestringa

https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getprivateprofilestring


 C# - 讀寫登錄檔

使用語言:C#,Registry 類別

命名空間:Microsoft.Win32

組件:Microsoft.Win32.Registry.dll

引用:using Microsoft.Win32;

範例:

class clsReg

    {

        // The name of the key must include a valid root.

        const string userRoot = "HKEY_CURRENT_USER";

        //有效的根名稱包含

        //HKEY_CURRENT_USER

        //HKEY_LOCAL_MACHINE

        //HKEY_CLASSES_ROOT

        //HKEY_USERS、HKEY_PERFORMANCE_DATA

        //HKEY_CURRENT_CONFIG 和 HKEY_DYN_DATA

        private  string subkey ;

        private string keyName;

        public clsReg(string Key)

        {

            subkey = Key;

            keyName = userRoot + "\\" + subkey;

        }

        public void SetKey(string ItemNane , string ItemVal)

        {

            Registry.SetValue(keyName, ItemNane, ItemVal);            

        }

        public void DelKey(string ItemNane)

        {

            Registry.CurrentUser.DeleteSubKey(ItemNane);

        }

    }


參考網址:https://docs.microsoft.com/zh-tw/dotnet/api/microsoft.win32.registry?view=net-5.0

DiCom 篇

 首先,要找到參考資料 (1) dicomlibrary: https://www.dicomlibrary.com/dicom/dicom-tags/  ,認識DiCom 的標籤。 (2) 再來一個參考文件: 數位醫學影像去識別化實作指引手冊 (3)DiCom 元件: GitH...