私はbasic_string<TCHAR>
をしようとしています。しかし、叫んでエラーを投げている。どうすればいいか分かりますか?std :: basic_stringの使い方<TCHAR>
答えて
TCHAR
は、アプリケーションで使用されている文字タイプのwinapi定義です。文字セットがマルチバイト文字の場合は、char
になります。 Unicodeに設定した場合は、wchar_t
になります。
wchar_t
の場合は、std::wcout
を使用する必要があります。それ以外の場合は、単なる平文std::cout
が問題ありません。
一般的にはまた、あなたが取得しているが、最も可能性の高いあなたはstd::cout
にstd::basic_string<wchar_t>
を挿入しようとしている、おそらくそのためoperator<<
過負荷が存在しないもの、エラーを説明するのに役立ちます。
ドーフィックは、広い文字列の場合はstd::wcout
、狭い場合はstd::cout
と言います。代わりにTCOUT場所での使用にこれにより
#if defined(UNICODE) || defined(_UNICODE)
#define tcout std::wcout
#else
#define tcout std::cout
#endif
:あなたは(TCHAR
は、この種のものを容易にするためのものです)、文字列のいずれかのタイプのためにコンパイルすることができるようにしたい場合はこのようなものは、時には人生をより容易にします。
また、厄介な#defineを使用する代わりに、正しいストリームへの参照としてtcoutを宣言することもできます。 :-) –
@ボ・ペルソン:ああ、清教徒。 :-) – Steve
@Bo Perssonのは、正しいストリームタイプと参照を使用することになるtcout
タイプを定義する別の方法を述べたように。これを行う際にはさらにいくつか考慮すべき事項がありますが、複数の定義や欠落した定義のためにリンカーの問題に直面することがあります。私は、ヘッダー内外部参照として、これらのタイプを宣言し、ソースファイルにそれらを一度を定義しているために働く何
。これはプリコンパイル済みヘッダー(stdafx)でも機能します。
ヘッダー
namespace std
{
#ifdef UNICODE
extern wostream& tcout;
#else
extern ostream& tcout;
#endif // UNICODE
}
実装
namespace std
{
#ifdef UNICODE
wostream& tcout = wcout;
#else
ostream& tcout = cout;
#endif // UNICODE
}
あなたは、いくつかのサンプルコード、およびまたあなたが取得している正確なエラーを与えることができますか? –
エラーを処理するときは、達成したいこと、エラーが報告された正確なコード、コンパイラ/リンカエラーを記述します。その情報は他の人があなたを助けるのに役立ちます。 –