はじめに 以下の環境で、Visual Studio Code で C++ のコーディング/ビルド/デバッグを実行できるようにするまでの初期設定手順になります。Qiita はじめ、各種ブログなどで同様の設定方法がいくつも紹介されていますが、アップデートが頻繁に行われ、最新の仕様を反映しているものがなかなかないので、2018年9月に設定した手順を自分用のメモとして残しておきます。 OS Windows Compiler gcc(MinGW) Visual Studio Code バージョン: 1.27.0 注意 繰り返しになりますがアップデートが頻繁に行われ、記載した情報がすぐに古くなってしまい役立たなくなる可能性があるので、現時点では英語しかないみたいですが、公式ドキュメント を参照することを強くお勧めします。公式ドキュメントは最新の仕様に追従しているはずなので、公式ドキュメントに従って設定
What is FreeImage? FreeImage is an Open Source library project for developers who would like to support popular graphics image formats like PNG, BMP, JPEG, TIFF and others as needed by today's multimedia applications. FreeImage is easy to use, fast, multithreading safe, compatible with all 32-bit or 64-bit versions of Windows, and cross-platform (works both with Linux and Mac OS X). read more... N
このブラウザーはサポートされなくなりました。 Microsoft Edge にアップグレードすると、最新の機能、セキュリティ更新プログラム、およびテクニカル サポートを利用できます。 この記事では、さまざまな Visual C++ 文字列型を他の文字列に変換する方法について説明します。 対象char *となる文字列型には、,, , wchar_t*, _bstr_t, CStringCComBSTR, basic_string, および System.String. どの場合も、新しい型に変換すると文字列のコピーが作成されます。 新しい文字列に加えられた変更は元の文字列には影響しません。また、その逆も同様です。 幅の狭い文字列とワイド文字列の変換の背景情報の詳細については、「狭い文字列とワイド文字列の間の変換」を参照してください。 例を実行する Visual Studio 2022 で例を
[gcc]iconvで文字エンコードを変換するサンプルプログラム 単にテキストファイル等の文字エンコードを変換するのであれば、iconvコマンドを使用して変換すれば良いのですが、 プログラム内部で取得した文字列の文字エンコードを変換したい場合もあります。 以下のプログラムはLinuxやCygwinの環境でC言語のプログラムからiconvを呼び出して文字エンコードを 変換する場合の手順を示したサンプルプログラムです。 --- tst_iconv.c --- #include <stdio.h> #include <iconv.h> #define BUFSIZE 1024 char outbuf[BUFSIZE]; int convert(char const *src, char const *dest, char const *text, char *buf, size_t bufsiz
ワイド文字(ワイドもじ、英: wide character)とは、主にC言語およびC++における文法要素で、1文字あたりのバイト数を通常より多くしたデータ型である。 概要[編集] C言語やC++の基本実行文字集合は通常、ASCIIのサブセットの文字種からなる。ただし実際の文字コードが何であるかは規定されていない。 漢字のような拡張実行文字集合は、通常マルチバイト文字として扱われるが、1文字を構成するバイト数が可変長であり、本来1つの文字でありながら複数の文字の組(あるいは文字列)として扱わなければならないなどの不便がある。そうした問題を解消するために、1文字を1つの整数値で扱えるようにすることを目指したのがワイド文字である。 wchar_t型[編集] C言語では1995年の ISO/IEC 9899/AMD1:1995 より、wchar_t 型や <wchar.h>、<wctype.h>
C++での文字コード変換 C++で文字コードを変換したい場合は、、、 標準ライブラリに変換機能はないので、Cと同じように外部ライブラリを使いましょう。 標準ライブラリに一時期codecvtというものもありましたが、C++17で結局非推奨となりました。あきらめて外部ライブラリを使いましょう。 WindowsならAPI(MultiByteToWideChar()やWideCharToMultiByte())でできたはずですが、Linuxなら個人的にはiconvを使います。ただし、iconvの引数仕様は若干扱い辛いので、私は以下のようにヘルパー関数を用意しています。 文字コード変換処理 - encoding.h #pragma once #include <algorithm> #include <cassert> #include <cmath> #include <cstdint> #inc
ホーム < ゲームつくろー! < C++踏み込み編 < charとUnicodeとワイド文字をごっちゃにしないために その4 charとUnicodeとワイド文字をごっちゃにしないために Visual Studio 2003あたりになってから、ちらほらと出てきたのが「Unicode」や「ワイド文字」という言葉。DirectXでもたびたびこれに苦しめられたりします。どうも世の中従来の1バイト文字からUnicodeへ過渡しそうな気配です。これらの文字の仕様については色々なサイトや辞書に詳しく説明されています。しかし、しっかりまとめないとやっぱり混乱してしまうもんなんです。「バイト文字をUnicodeに変換するのと、マルチバイト文字をワイド文字に変換するのは何が違うのか?」と聞かれたときに、すっと回答できますでしょうか?できる方はすばらしい。迷った方も大丈夫。世の中そんなもんです。 ここでは、c
一文字のサイズが固定の文字型 マルチバイト文字の項で説明したように、マルチバイト文字は扱いが大変です。 文字種によって必要なバイト数が異なることが煩雑になる最大の原因で、これが固定ならばかなり楽になるはずです。 それを実現するのがワイド文字です。 ワイド文字はchar型の代わりにwchar_t型というデータ型で扱います。 これは<wchar.h>または<stdlib.h>をインクルードすることで使用できるようになります。 単にwchar_t型を使用するだけならどちらか一方で構いませんが、一方にしか定義されていない関数もあるのでフルに使用する場合は両方をインクルードしておきます。 実際にwchar_t型を使用してみます。 #include <stdio.h> //<wchar.h>をインクルード #include <wchar.h> int main() { wchar_t wmoji1 =
C++における文字列の扱い C++における文字列の扱いはとてつもなく複雑。 文字セット、型、関数などいろいろあるので調べてみた。 VC++ 2010 Express マルチバイト文字セット Unicode文字セット 2種類の文字コードを扱える。 どの文字コードを扱うかによって、プログラミングで用いる型や関数が変わる。 マルチバイト文字は日本語のWindowsではShift-JISを指す。 おそらく英語圏のWindowsでは別の文字コードを指す。 ソースコードファイルのCharset Unicode文字セットを使用しても、保存されるソースコードファイルはShift-JISだった。 ちなみにVC#2010ExpressはUTF8(BOM有)だった。 どちらも内部コードとは一致しない。 VC++はUnicode文字セットを選んだらUnicode(UTF16?)のはず。でもソースコードファイルはS
第2.0版 (自作)文字列変換関数を追加 はじめに C# では文字列型は System.String だけです。一方、Visual C++ では、C 言語との互換性、Win16 との互換性、Win32 との互換性、テンプレート等々の関連で文字列とみなされる型はいろいろあります。 文字列は Visual Studio 2003 までは SJIS が標準だったらしいですが、Visual Studio 2005 からは Unicode (ワイド文字列) が標準になったそうで、混乱に輪がかかっています。よって、古いソースを Visual Studio 2017 でビルドすると、エラーがずらりと表示されます。 ここでは、それらについてまとめてみました。 どんな「文字列」があるか? Visual C++ にはどんな「文字列」があるか、ざっくり見てみましょう。もしかしたら、もっとあるかもしれませんが、比
やりたいこと charとかwchar_tとか、文字列を扱う型が色々あって、なにをどういうときに使えば正しいのかよくわからないので知りたい。 文字列の種類 ワイド文字とは 1文字表現するのに2バイト用いる文字のこと。 Unicodeはこれ。 マルチバイト文字とは 1バイト以上の文字のこと。 SJISで日本語使う場合なんかはこれ。
DevIL song: “la la la, a cross-platform image library utilizing a simple syntax to load, save, convert, manipulate, filter and display a variety of images with ease, la la la” As I promised in this post here is a tutorial about DevIL. This tutorial shows one way to load an image file and use it as a texture in OpenGL. We’ll use DevIL 1.7.5. This is the first real tutorial at Geeks3D. I have a mill
January 1, 2017 After nearly 8 years, DevIL has a new release! The build system is different than before, and I am trying to establish things after so many years away from this project, so please let me know if there are any issues with it. There has been great help from multiple people on GitHub to get this going again. One of my favorite new features of this release is a different histogram equa
// #include <IL/il.h> // ilu.hもインクルードするなら不要 #include <IL/ilu.h> ILuint image; unsigned int width, height; // 初期化(ilとiluをこの順番で初期化する) ilInit(); iluInit(); // イメージ名(識別番号)を生成 ilGenImages(1, &image); // 生成した名前をバインド ilBindImage(image); // ファイルから画像をロード if (ilLoad(imageFile)) { width = ilGetInteger(IL_IMAGE_WIDTH); height = ilGetInteger(IL_IMAGE_HEIGHT); // 画素の並びが逆の場合は入れ替える if (ilGetInteger(IL_IMAGE_ORIGI
・・・というわけで、前回、 System.Drawing.BitmapはJPEGの画質が悪すぎる ということが判明したので、 その代わりに使えそうなものを探してみたわけです。 まず、最初に見つけたのが 「libjpeg」(IJG JPEGライブラリ) 公式サイト http://www.ijg.org/ が、調べてみると、どうも、 ・Cで書かれたソースコードで配布されている。 ・プログラムに直接ソースコードを組み込んで使うのが、もっぱらの利用法。 ・DLLにできなくもないが、なかなかに面倒らしい。 ・誰かDLL作ってバイナリ公開してないかな-、と思ったが見つからない。 ・そんなこんなで、.NETで利用するのも難しそう。 というわけで、ひとまず諦める。 そして見つけた第2候補。 「FreeImage」 公式サイト http://freeimage.sourceforge.net/ ・オープンソ
はじめに 画像変換ツールを自作したい方に向けて、実装例を紹介します。 FreeImageというライブラリを使うことで、PNG、JPEG、WebP、GIF、BMP、TIFFなど、多様なファイル形式に相互変換可能です。 開発環境の情報 Windows 10 DMD v2.096.0 FreeImage 3.18.0 画像変換ツールの実装例 画像ファイルを読み込んでからの画像変換処理を実装しました。 /+ dub.sdl: name "convFreeImage" dependency "bindbc-freeimage" version=">=0.3.0" versions "FI_318" +/ // dub build --build=release --single convFreeImage.d import std.conv; import std.stdio; import std
目標 コマンドライン引数とはmain 関数の引数のことです。 実行するときに、 コマンドラインからコマンドライン引数に値を与えることができます。 コマンドライン引数を利用したC言語プログラムの作成と利用方法を学ぶことが今日の目的です。 コマンドライン引数をもつプログラム これまでは main関数を main(){ .... としてきましたが、ここを main(int argc, char *argv[]){ .... に変更します。これで準備完了です。argc, argvの意味ですが、 argcはコマンドライン引数の数 文字列配列argvにはコマンドライン引数が格納されます。例えば、 % ./a.out 100 abc % を実行すると、 argc=3; コマンドライン引数の数 argv[0]="./a.out"; argv[1]="100"; argv[2]="abc"; と、 コマンド
C++で簡単に使える画像読み込みライブラリが欲しかったので。 Official site 対応フォーマット http://freeimage.sourceforge.net/features.html のSUPPORTED FORMATを参照。有名どころは使える。 サンプル #include<iostream> #include<FreeImage.h> int main() { std::cout << "FreeImage ver. " << FreeImage_GetVersion() << std::endl; std::cout << FreeImage_GetCopyrightMessage() << std::endl; try { // GIF画像を読み込み auto filename = "lena_color.gif"; auto image = std::shared
概要 C/C++ にて 画像ファイルを読み込む方法をまとめた。 画像ファイルを読み込んで、GTK window または OpenGL window に表示する。 方法1 FreeImage や Devil などの汎用的な画像ライブラリを使用する 方法2 OpenCV など画像読み込み機能を持つライブラリを使用する 方法3 linjpeg や libpng など特定の画像形式の画像ライブラリを使用する 方法4 ライブラリを使用せず、自作する bmp や tga などのファイル構造が簡単で非圧縮の画像形式は、C++ の標準関数で作成することができる。 MAC にて動作確認したコードを Github に公開した。 https://github.com/ohwada/MAC_cpp_Samples/blob/master/ImageLoader.md FreeImage 汎用的な画像ライブラリ 対
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く