0

最初の 256 ASCII 文字を文字列配列に格納しようとしています。

私はこのようなものを持っています:

   string values[256];
   for (int i=0; i<256; i++){
        char temp = i;
        values[i] = temp;
   }

しかし、これを行う方法を正確に理解できないようです。私が得ているエラーは次のとおりです。

   invalid conversion from 'char' to 'const char*'
4

4 に答える 4

4

解決策はこれを行うことです:

#include <string>

std::string values[256];
for (int i=0; i<256; i++){
  char temp = i;
  values[i] = temp;
}

ここに見られるように、このコードには何の問題もありません。256個の単一文字の配列を保持する正当な理由があると思いますstd::strings

std::string引数として単一の文字を受け取る代入演算子があるので、上記のコードに問題はありません。

于 2012-07-24T05:41:04.793 に答える
1

これは、c++11 のワンライナーです。

std::iota(std::begin(values), std::end(values), '\0');

iota は<algorithm>ヘッダーにあり、begin と end は にあり<iterator>ます。

于 2012-07-24T07:04:48.367 に答える
0

実際、このように文字列データ型の配列を宣言すると、256 個の異なる文字列が作成されます。各文字列は、コンピューターのメモリに配置できる文字数と同じ数を格納できます。

各変数 likevalues[i]はメモリ内の文字列へのポインタです。これがエラーの原因です。文字から文字へのポインタ

char values[256]そのため、データ型を両側で同じにするために、単一の char 配列が必要です。

ただし、同じ方法で実行したい場合は、ASCII 値を文字列に変換する必要があります。

................................................... 文字列は文字の組み合わせ

于 2012-07-24T06:36:25.440 に答える
0

0 ~ 127 の標準 ASCII 文字セットと、128 ~ 255 の拡張 ASCII 文字セットがあります。

256 文字を文字列配列に格納する目的を述べていただければ、より適切な STL または別のソリューションをご案内できます。

本当に配列のように使用したい場合は、単に文字の配列または文字の std::vector のように使用しないでください。

std::string を使用する場合は、次のようにしてください。

   string str;
   str.reserve(256);
   str.clear();
   string::iterator iter;
   for(i=0;i<256;i++)
     iter=str.insert(str.begin()+i,i);
   //Do something with str here.
于 2012-07-24T06:39:36.517 に答える