質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

3回答

4323閲覧

iniファイルからアドレスを取得する

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/11/30 00:34

プログラムミング初心者です。
現在使用してる言語はVC++です。
また、長文ですみません。
■実施したい内容■
1.sample.iniに保存されているアドレスを取得
2.取得したアドレス先に保存されているデータを取得

■詳細■
”sample.ini”に保存されているデータ
/////////////////////////////////////
[ADRESS]
SampleAdress = C:\xxxx.ini
/////////////////////////////////////

”xxxx.ini”に保存されているデータ
/////////////////////////////////////
[Barcode]
SampleBarcode = 12345 /←数値として取得したいです。/
/////////////////////////////////////

現在はGetPrivateProfileString関数を使用と考えています。関数の詳細は下記の通りです。

GetPrivateProfileString(
セクション名,
キー名,
既定の文字列,
情報が格納されるバッファ,
情報バッファのサイズ,
.ini ファイルの名前)

上記1.を実施する時の引数”.ini ファイルの名前”はdefineで絶対パスにしようと思っています。
■質問内容■
1.”既定の文字列,”情報が格納されるバッファ”,”情報バッファのサイズ”は、
どのような型でバッファサイズはどのくらいあればよろしいでしょうか。
2.GetPrivateProfileString関数以外に簡単な方法があれば教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

型についてはリファレンスを参照。
バッファサイズは"十分な大きさ"としか言えないですね。絶対にN文字以下であることが保証されているならN。

GetPrivateProfileString関数以外に簡単な方法は...心当たりがありません。
直接呼ばずに小さなwrapperを書いておけばちょびっと楽になります。
たとえば

std::string getprofile(const std::string& ini, const std::string& section, const std::string& key, const std::string fefaultstr = "") { このなかで GetPrivateProfileStringを呼んで結果を返す }

を定義しておけば
std::string value = getprofile(”sample.ini”, "ADDRESS", "SampleAddress");
なんてなカンジで使えます。

投稿2016/11/30 00:52

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

こんにちは。

1.”既定の文字列,”情報が格納されるバッファ”,”情報バッファのサイズ”は、
どのような型でバッファサイズはどのくらいあればよろしいでしょうか。

「既定の文字列」は通常、文字列リテラルを使います。例えば、_T("foo")です。
_T()マクロについてはちょっと古いけどこの辺を参考にされて下さい。

「情報が格納されるバッファ」はTCHAR型の配列です。
実際に設定される可能性がある文字数+1以上の要素を確保して下さい。
「情報バッファのサイズ」はその配列の要素数です。
ここにサンプルがあります。

2.GetPrivateProfileString関数以外に簡単な方法があれば教えてください。
SampleBarcodeが10進数表記ならGetPrivateProfileIntが楽です。

投稿2016/11/30 00:47

編集2016/11/30 00:55
Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

初心者には敷居が高いかもしれませんが、APIを使わずに外部のライブラリで読み出す方法も存在します。

もし、C++でboostが使えるのならboost::property_treeを使ってstringに読み出すことが可能です。この場合はバッファのサイズは気にしなくてOKです。boost iniファイルの読み込み/書き込み

こちらもC++限定ですが、boost以外にもCLXというライブラリにiniファイルの読み込みがあります。
CLX::iniファイルの読み込み

いずれも、APIを使わないINIファイルへのアクセスライブラリです。

CLXはヘッダーだけで構成されたライブラリなので、適当な位置に解凍してインクルードパスを通せば使えます。
boostは、VCならインストーラが準備されているのでそれをインストールして、インクルードパスとライブラリパスを通せば使えます。
VC用boostバイナリー

投稿2016/11/30 08:02

PineMatsu

総合スコア3579

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問