2016-06-21 32 views
1

std::stringは、すべてのプラットフォームと標準コンパイラでAsciiエンコーディングの文字セットを保持するはずですか?言い換えればstd :: stringにはAscii文字のみが含まれていますか?

、私はこれを行う場合、私のC++プログラムは、ASCII文字のセットを取得することを確認することができます:

std::string input; 
std::getline(std::cin, input); 

EDIT:より正確な言葉で

、私が欲しいですユーザーが"a0"と入力すると、2つの要素でstd::stringが得られることを確認してください。一つ目は97であり、第二は48

+2

保証は絶対にありません。UTF-8は非常に一般的な文字エンコーディングです。そのようなシステムで "á0"と入力すると、文字列には* 3つの要素が含まれます。 –

+0

@ MarkRansom私は参照してください。私は、アスキー文字列を入力する方法を強制するかどうか、別の質問を投稿します。ありがとう –

+0

"私は変数' std :: string xml'を持っています。コンパイラやSTLは内部にXML文字列だけを強制していますか? - いいえ。型は "XML"や "Unicode"ではなく "char"です。型、形式、またはエンコーディングを混同しないでください。しかし、そこには有効な質問があります。「標準のIOエンコードをどのように制御できますか?」 – Fozi

答えて

2

いいえ、

std::string input; 
std::getline(std::cin, input); 

は、ASCII文字のみが返される保証はありませんです。 charが保持する値の範囲は、ASCII文字に限定されません。

プラットフォームがASCII以外のエンコーディングを使用している場合は、明らかに異なる文字セットを取得します。それは非常に簡単にあまりにもextended ASCII charactersを保持することができるよりもプラットフォーム上charは、unsigned型であれば、あなたのプラットフォームは、ASCIIエンコーディングを使用している場合でも

。言い換えれば

+0

ありがとう..入力をAsciiとして扱うにはどうすればよいですか?あなたが気にしないなら、ちょうどリンクが役立ちます。 (私は大量の間違った文脈や成熟していない文脈のために自分自身を見るのを恐れています) –

+0

@HumamHelfawi、非ASCII文字が 'input'に読み込まれないようにする方法を尋ねていますか? –

+0

より正確な言葉では、ユーザーが "a0"を入力した場合、2つの要素を含む文字列が得られることを確認したいと思います。最初のものは97で、2番目のものは48 –

3

、私はこれを行う場合、私のC++プログラムは、ASCII文字のセットを取得することを確認することができます...

std::string
のように、実際にstd::basic_string<>ための専門であります using std::string std::basic_string<char>;

template< 
    class CharT, 
    class Traits = std::char_traits<CharT>, 
    class Allocator = std::allocator<CharT> 
> class basic_string; 

Traitsで定義されている文字の任意の型を保持することができます。

簡潔に言えば、std::stringには、EBCDICなどのASCII文字エンコーディングを含めることができます。しかし、あなたはそれをどのように使用しているかのように透明でなければなりません。

6

std::stringは "文字"を保持しません。それはバイトを保持します。

これらのバイトは、ASCIIまたはEDBCICまたはUnicodeとしてエンコードすることによって人間が読める文字列を形成できます。それらは、コンピュータ可読情報(例えば、JPEG画像)を格納するバイナリ符号化であってもよい。スタックオーバーフローを3週間連続で使用する方法については、エイリアンからのガイドラインになることもあります。彼らは完全なランダムなホワイトノイズである可能性があります。

あなたのプログラムは、読んでいるデータが実際に何を意味し、どのようにコード化されているかを理解する必要があります。これは、プログラマーとしてのあなたの仕事の一部でなければなりません。

(それはcharchar命名されていること、不幸、そして最近で誤解を招くのです。)

+0

「落ちることなく」「保証がないので幸いです。いつか、私はいつかガイドラインを見つけられるかもしれません –

+0

@HumamHelfawi:それらのガイドラインを解読するプログラムを書くことができると仮定します;) –

+0

'char'が' btye'であると言っていますか? –

関連する問題