実際の C++ 文字列を使用します。
#include <string>
using std::string;
void child(const string str)
{
str += ".suffix"; // parameter str is a copy of argument
}
void parent()
{
string parents_string = "abc";
child(parents_string);
// parents_string is not modified
}
TCHAR
Windows API の世界で作業する必要がある場合は、次を使用しstd::basic_string<TCHAR>
ます。
typedef std::basic_string<TCHAR> str_t; // now use str_t everywhere
したがって、コードは次のようになります
void my_class::load_bg_bmp(const str_t &dir_path)
{
str_t file_path = dir_path + _T("\\bg.bmp")l
bgtexturesurf = SDL_LoadBMP(file_path.c_str()));
// ...
}
このTCHAR
タイプにより、ビルド時間に幅の狭い文字と幅の広い文字を切り替えることができます。を使用しても意味がありませんが、 のようなラップされTCHAR
ていない狭い文字列リテラルを使用して"\\bg.tmp"
ください。
strcat
また、初期化されていない配列に対しては、未定義の動作が呼び出されることに注意してください。の最初の引数strcat
は文字列でなければなりません: null で終了する文字配列の最初の要素へのポインター。初期化されていない配列は文字列ではありません。
C++ 文字列クラスを使用することで、このような低レベルの問題を回避できます。