:: 진공에 대해 알려주마.

TOOLS (Type casting and ...) 본문

진공/노하우

TOOLS (Type casting and ...)

하이백 2023. 8. 26. 13:00

누군가 말했지. 프로그램 개발보다 형변환 하다가 개발 시간을 다보낸다고...
그래서 여기 모아보았다.
프로그램 개발시 필요한 형변환을 중심으로 각종 필요한 항목을 업데이트 할 예정이다. 
물론 모두 테스트 완료 되었거나 실제 사용하는 Code들 이다.


C++ CString to Char* (출처 https://sggilsroom.tistory.com/126 )

char Buffer[255] = "";
CString szString;
size_t CharactersConverted = 0;
wcstombs_s(&CharactersConverted, Buffer, szString.GetLength()+1, szString, _TRUNCATE);

 


문자열을 구분자로 분리 함수와 호출 예제 (출처 ?)

// 스트링을 구분자로 분리
vector<string> splitString( string input, char dlim )
{
    vector<string> result;
    stringstream ss;
    string stringBuffer;
    ss.str(input);

    while (getline(ss, stringBuffer, dlim))
    {
        result.push_back(stringBuffer);
    }
    return result;
}

int ReadFileAndConvertFloat()
{
    FILE *fp;
    char buffer[512];
    char* filename = "D:\\Log\\Data.txt";

    if ((fp = fopen(filename, "r")) == NULL) return -1;

    while (fgets(buffer, 512, fp) != NULL)
    {
        // 함수 호출 (한줄을 읽어서 쉼표로 구분하여 숫자로 변환)
        vector<string> result = splitString( buffer, ',' );

        string str1 = result[0];
        string str2 = result[1];
        string str3 = result[2];

        float f0 = std::stof(str1);
        float f1 = std::stof(str2);
        float f2 = std::stof(str3);
        
        // .........................        
    }
    return 0;
}

TEXT FILE READ

int ReadWriteTextFile()
{
    FILE *fp;
    char buffer[512];
    char* filename = "D:\\Log\\Data.txt";
    
    if ((fp = fopen(filename, "r")) == NULL) return -1;
    
    while (fgets(buffer, 512, fp) != NULL)
    {
        // 함수 호출 (한줄을 읽어서 쉼표로 구분하여 숫자로 변환)
        vector<string> result = splitString( buffer, ',' );
        
        string str1 = result[0];
        string str2 = result[1];
        string str3 = result[2];
        
        float f0 = std::stof(str1);
        float f1 = std::stof(str2);
        float f2 = std::stof(str3);
        
        
	}
    return 0;
}

 

TEXT FILE WRITE

void DataSave()
{
    FILE *fp;
    char buffer[512];
    char* filename = "D:\\LOG\\DataPosXO.txt";

    string strLine = "TEXT FILE";

    if( ( fp = fopen( filename, "w" ) ) == NULL ) return;

    strcpy( buffer, strLine.c_str() );
    fputs( buffer, fp );

    fclose( fp );
}

 

C++ 파일 READ/WRITE

// ConsoleApplication2.cpp : 이 파일에는 'main' 함수가 포함됩니다. 거기서 프로그램 실행이 시작되고 종료됩니다.
//

#include <atlstr.h>
#include <iostream>
#include <fstream>
#include <string>

int main()
{
    std::string Path = "D:\\TextFile2.txt";

    // File write
    std::ofstream writeFile(Path);
    if (writeFile.is_open())
    {
        writeFile << "example code\n";
        writeFile << "text in/out\n";
        writeFile << "write/ read file\n";
        writeFile.close();
    }

    // File read by Char*
    std::ifstream readFile(Path);
    if (readFile.is_open())
    {
        char line[512];

        while (!readFile.eof())
        {
            readFile.getline(line, sizeof(line));
            std::cout << line << std::endl;
        }
        //
        readFile.close();
    }

    // string형으로 바로 읽기
    std::ifstream strfile(Path);
    if (strfile.is_open())
    {
        std::string line;
        const char* szline;
        int nNo = 0;
        double dNo = 0.0;

        while ( getline (strfile, line))       // #include <string>
        {
            std::cout << line << std::endl;

            szline = line.c_str();
            nNo = atoi(line.c_str());
            dNo = atof(line.c_str());
        }
        strfile.close();
    }
}

 

 

 

'진공 > 노하우' 카테고리의 다른 글

MODBUS 2  (0) 2023.10.14
리부트  (0) 2023.09.23
"A\0B\0C\0\0\0\0\0\0\0\0\0"  (0) 2023.04.08
VIEW MON of RS-485  (0) 2022.11.20
시리얼 통신  (4) 2022.09.17
Comments