0

私はプログラミングにかなり慣れていません。ユーザーが日付を入力し、その日付がファイルディレクトリ名に追加され、そのファイルディレクトリが検索されるプログラムを作成しようとしています。

これが私が以下で取り組んでいるものです。私はこれを行うための多くの機能を持っています..私はオンラインで検索し、いくつかの異なる方法で変換を試みましたが、それを理解していません....それで私は(私が知っていることは間違っています) static_cast。

たぶん私は正しく変換を行っていません...基本的にこれはWINAPIハンドラーを使用する関数にそれをスローします。私がそれを機能させることができるかどうかは、まったく別の話です...助けてくれてありがとう!

wstring fDate;
wstring fileDin;

const TCHAR* s = _T (fileDin);

std::wstring(fDate);
std::wstring(fileDin) =L"Z:\\software\\A\\AC\\" + fDate;
wcout<< fileDin;
cout <<endl;

//wstring fileDin(&arc[1]);
fileDin = static_cast<TCHAR>(arc[1]);
dir(2, arc);
4

1 に答える 1

1

TCHARwchar_t(Unicode を使用する場合) またはchar(マルチバイトを使用する場合) のいずれかです。
一方std::wstring、 type の文字は常に含まれているため、 (可能であれば)の代わりに直接wchar_t使用する方が適切です。wchar_t*TCHAR*

次に、のコンストラクターを使用wchar_t*してstd::wstring変換を行うことができますstd::wstring

wchar_t* wcstr = L"my string";
std::wstring wstr(wcstr);

そしてstd::wstringwchar_t*簡単な呼び出しc_str()方法で:

wchar_t* wcstr = wstr.c_str();

std::wstring次に、「ワイド」文字列 (文字を保持wchar_tする ) とマルチバイト文字列 (std::stringを保持する ) の間で変換する必要がある場合がありますchar。私は通常、次のヘルパーを使用します。

// multi byte to wide char:
std::wstring s2ws(const std::string& str)
{
    int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), NULL, 0);
    std::wstring wstrTo(size_needed, 0);
    MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstrTo[0], size_needed);
    return wstrTo;
}

// wide char to multi byte:
std::string ws2s(const std::wstring& wstr)
{
    int size_needed = WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), int(wstr.length() + 1), 0, 0, 0, 0); 
    std::string strTo(size_needed, 0);
    WideCharToMultiByte(CP_ACP, 0, wstr.c_str(), int(wstr.length() + 1), &strTo[0], size_needed, 0, 0); 
    return strTo;
}
于 2013-02-06T22:11:37.060 に答える