#if __cplusplus == 201703L // C++17 #elif __cplusplus == 201402L //C++14 #elif __cplusplus == 201103L //C++11 #else // Unknown #endif
2023年1月28日土曜日
gccのpredefine macroでc++のバージョンを指定する方法のメモ
サクッと以下のような感じで
2023年1月24日火曜日
GUIDを文字列で出力する方法のメモ
デバッグのためにGUIDを標準出力に出したかっただけ。
GUID guid;
//何かGUIDを取得する処理
WCHAR strGUID[39];
//要combaseapi.h
StringFromGUID2(guid, strGUID, 39);
std::wcout << strGUID << std::endl;
2023年1月21日土曜日
C++でバイナリファイルを読む方法のメモ
バイナリファイルを一度で読みたかったので。ほかにもいろいろ方法はあると思うけど、とりあえず簡易に。
C++11以降。たぶん1バイトずつ読むので、大きいファイルだと遅いかも(知らんけど)。
#include <string>
#include <iostream>
#include <fstream>
#include <vector>
std::vector<char> readAllBinary(const std::string& fileName){
std::fstream file(fileName, std::ios::in | std::ios::binary);
std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
file.close();
return buffer;
}
int main(){
std::string filePath="m_01.jp";
auto vecBuffer = readAllBinary(filePath);
//ファイルの読み込みに失敗している場合サイズは0になる。
std::cout << "FileSize: " << vecBuffer.size() << std::endl;
//buffer pointer
char* buffdata = vecBuffer.data();
// some process
return 0;
}