Javas .getBytes()メソッドに相当するC++があるかどうか疑問に思います。私は.txtファイルを読み込み、各行をバイトに変換する必要があります。文字列をバイト配列に変換する
ありがとうございます!
Javas .getBytes()メソッドに相当するC++があるかどうか疑問に思います。私は.txtファイルを読み込み、各行をバイトに変換する必要があります。文字列をバイト配列に変換する
ありがとうございます!
C++の場合、char
は1バイトです。したがって、std::string
はすでにバイト列です。
ただし、unsigned char
のシーケンスが必要な場合があります。
1つの方法は、文字列からバイト値をコピーすることです。 std::vector
へ:
using Byte = unsigned char;
vector<Byte> const bytes(s.begin(), s.end());
あなたは行ごとにstd::wstring
、例えばにテキストファイルを読んでいる場合幅の広いストリームを使用すると、バイトは、その文字列の優先エンコードに依存します。
実際には、おそらくIBMメインフレームを除いて、C++ワイド文字列はUTF-16またはUTF-32でエンコードされています。これらの2つのエンコーディングの場合、標準ライブラリはUTF-8との間で変換できるspecializations of std::codecvt
を提供します。
あなたはワイド文字列から任意のコード化をしたい場合は、申し訳ありません、限りC++標準ライブラリに関しては運の出ています。
Java java.lang.Stringは、std :: stringのような文字の配列もラップします。その点で違いはありません。 –
@SeanF:Javaの 'String'は内部的にUTF-16としてエンコードされたUnicodeです。 C++の 'std :: string'は一連のバイトです。それは非常に大きな違いです。 –
@乾杯と乾杯。 C++では、好きなように文字列をエンコードすることができます。 UTF-16 std :: stringが必要な場合は、何も停止しません。 –
std :: string :: dataは同等です。
Javaの '.getBytes()'が未処理のポインタを生成していますか?それは何ですか? –
Javaにはポインタがありません。 getBytesはstd :: string :: dataのように文字配列に直接アクセスできるだけで、どちらの場合でもバイト配列を見ています。どちらの言語でも、元の文字列オブジェクトではなく、これらの配列を使用することをお勧めします。 –
Javaにはポインタがいっぱいです。そのため、Javaに関する質問に答えるために慣れ親しんでおくべきJava言語仕様がポインタと呼ばれています。しかし、Javaには未処理のポインタはありません。これは私のここでのポイントです: 'std :: string :: data'はJavaのものと同等であり、無意味です。 –
C++コードを投稿して、必要なものを教えてください:16進数のバイト、それ以外のもの? –
これを確認してください:http://stackoverflow.com/questions/505021/get-bytes-from-stdstring-in-c –