前提・実現したいこと
- 前提:
前任者と連絡が取れない状況で、ハードコードされているパスを可変に変更する必要がある。
- 実現したいこと:
C++のソースにハードコードされているフォルダパス(の一部)をiniファイルから取得した値に差替えたい。
発生している問題・エラーメッセージ
ハードコードされているパスを出力すると、
C:/ProgramData/HOGE/TMP/Output/
と出力されるが、iniファイルから取得した値に差替えて出力すると、
ンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンンン
と出力される。
該当のソースコード
ConsoleApplication.cpp
C++
1#include "stdafx.h" 2#include <string> 3#include <iostream> 4 5#include "Header1.h" 6 7int main() 8{ 9 // 元からあるファイルパスを出力 10 std::cout << HOGE_TMP_OUT_OLD << std::endl; 11 12 //今回追加したファイルパスを出力 13 std::cout << HOGE_TMP_OUT_NEW << std::endl; 14 15 return 1; 16}
Header1.h
C++
1#include "stdafx.h" 2#include <string> 3#include <Windows.h> 4 5std::string GetBaseFolderPath() 6{ 7 //「setting.ini」から「section1」セクションの「key1」キーに 8 // 設定された値を取得する(「C:/ProgramData/HOGE/TMP」を取得する想定) 9 LPCSTR lpAppName = "section1"; 10 LPCSTR lpKeyName = "key1"; 11 LPCSTR lpDefault = ""; 12 char charBuffer[256]; 13 LPCSTR lpConfigFilePath = ".\setting.ini"; 14 15 GetPrivateProfileStringA(lpAppName, lpKeyName, lpDefault, charBuffer, sizeof(charBuffer), lpConfigFilePath); 16 17 return std::string(charBuffer); 18} 19 20//今回追加したファイルパス 21static const char* HOGE_TMP_OUT_NEW = (GetBaseFolderPath() + "/Output/").c_str(); 22 23// 元からあったファイルパス 24static const char* HOGE_TMP_OUT_OLD = "C:/ProgramData/HOGE/TMP/Output/";
setting.ini
ini
1[section1] 2key1=C:/ProgramData/HOGE/TMP
試したこと
- デバッガで「GetBaseFolderPath()」のreturn時に止めて、charBufferの内容を確認したところ、想定した値(「C:/ProgramData/HOGE/TMP」)だった
補足情報(FW/ツールのバージョンなど)
OS:Windows 7
ツール:Visual Studio Professional 2015
C++はやり始めて2週間程度なのでどこから調べたらいいのかがわかっておりません。
直前までJavaやMatlabを触っていたので、C++っぽくない記述がありましたら申し訳ありません。
どなたか回答していただけると幸いです。
回答1件
あなたの回答
tips
プレビュー