私は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
}
- 1. 'std :: wstring {aka std :: basic_string <wchar_t>}'を非スカラー型 'UString {aka std :: basic_string <char>}'に変換します。
- 2. std :: basic_string specialization
- 3. 未定義テンプレートの暗黙的なインスタンス化 'std :: basic_string <char、std :: char_traits <char>、std :: allocator >'
- 4. 未解決の外部シンボル "std :: basic_string"
- 5. エラーC3867 'std :: basic_string <char、std :: char_traits <char>、std :: allocator <char>> :: c_str':非標準構文。 '&'を使用してメンバーへのポインタを作成
- 6. libC++ abi.dylib:タイプstd :: out_of_rangeのキャッチされていない例外で終了:basic_stringエラー?
- 7. std :: basic_stringからintに変換できませんVisual studio C++
- 8. std :: refの使い方は?
- 9. std :: thread sleepの使い方
- 10. std :: cout << xの間のdiffrenceは何ですか;とstd :: cout << x << std :: endl ;?
- 11. それはのbasic_string <> ::イテレータをテンプレートすることは可能ですか?
- 12. ベクトル<bool>を回避するには、basic_string <bool>を使用しますか?
- 13. std :: vector <std::string>クラッシュ
- 14. のstd ::機能とstd :: <code>std::packaged_task</code>が<code>void operator()(ArgTypes... args)</code>をオーバーロードしていますので、私は、<code>std::function<void()></code>の<code>std::vector</code>に<code>std::packaged_task</code>を移動しようとしていますpackaged_task変換
- 15. クラン、STD ::のshared_ptrとstd ::未満/オペレータ<
- 16. `std :: vector <std :: uint8_t>の高速コピー
- 17. 「マージ(のstd ::ベクトル<int>&、のstd ::ベクトル<int>&)
- 18. basic_string <TCHAR>は宣言された場所の外での定義を許可していません
- 19. std :: is_signedの相違点<T>とstd :: numeric_limits <T> :: is_signed?
- 20. std :: std :: stringとstd :: vectorの間の移動<unsigned char>
- 21. 私は2つの機能</p> <pre><code>void foo() { std::cout << 1 << std::endl; } void bar() { std::cout << 2 << std::endl; } </code></pre> <p>をお持ちの場合は2個の関数のC++
- 22. エラー2664 - std :: vector <...>をstd :: tr1 :: shared_ptr
- 23. basic_string :: append(iter、iter)がstd :: copyを呼び出さないのはなぜですか?
- 24. 'this'ポインタを 'std :: stack <_Ty>'から 'std :: stack <_Ty>&'
- 25. '演算子<<' のstdで::演算子<< [_Traits =のstdと:: char_traits <char>]
- 26. std :: functionの比較<>
- 27. <はstd :: reference_wrapper <T>>はstd ::ベクトルします<T>
- 28. 使用のstd :: STDでのstd ::タプル::ベクトル
- 29. C++のstd ::マップ<はstd ::文字列、整数>私は、このような方法でのstd ::マップを使用してい
- 30. 反復::ベクトル<std :: vector <char>>?
あなたは、いくつかのサンプルコード、およびまたあなたが取得している正確なエラーを与えることができますか? –
エラーを処理するときは、達成したいこと、エラーが報告された正確なコード、コンパイラ/リンカエラーを記述します。その情報は他の人があなたを助けるのに役立ちます。 –