如何在数组中存储前256个ascii字符?

时间:2012-07-24 05:30:27

标签: c++ string ascii

我正在尝试将前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 个答案:

答案 0 :(得分:4)

解决方案就是这样做:

#include <string>

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

可以看出here,这段代码没有任何问题。我假设您有充分的理由保留256个单字符std::strings的数组。

std::string有一个assignment operator,它将一个char作为参数,所以上面的代码没有任何问题。

答案 1 :(得分:1)

这是c ++ 11中的单行代码:

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

iota位于<algorithm>标题中,开头和结尾位于<iterator>

答案 2 :(得分:0)

实际上当你声明一个像这样的字符串数据类型数组时,它将创建256个不同的字符串,每个字符串都能够存储可以放入计算机内存的字符数

并且每个变量如values[i]都是指向内存中字符串的指针,这就是错误的原因。 char to char pointer

这就是为什么我们需要像char values[256]那样使用单个字符数组来使两边的数据类型相同。

但如果您想以相同的方式执行此操作,则需要将ascii值转换为字符串。

.............................................. 字符串是字符的组合

答案 3 :(得分:0)

我们有一个从0到127的标准ASCII字符集和一个扩展的ASCII,范围是128到255。

如果您可以说明在字符串数组中存储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.