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

C++ 如何在数组中存储前256个ascii字符?,c++,string,ascii,C++,String,Ascii,我试图将前256个ASCII字符存储在字符串数组中 我有这样的想法: string values[256]; for (int i=0; i<256; i++){ char temp = i; values[i] = temp; } string str; str.reserve(256); str.clear(); string::iterator iter; for(i=0;i<256;i++)

我试图将前256个ASCII字符存储在字符串数组中

我有这样的想法:

   string values[256];
   for (int i=0; i<256; i++){
        char temp = i;
        values[i] = temp;
   }
   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.

解决方案是这样做的:

#include <string>

std::string values[256];
for (int i=0; i<256; i++){
  char temp = i;
  values[i] = temp;
}
#包括
std::字符串值[256];

对于(int i=0;i,解决方法是:

#include <string>

std::string values[256];
for (int i=0; i<256; i++){
  char temp = i;
  values[i] = temp;
}
#包括
std::字符串值[256];

对于(int i=0;i实际上,当您声明这样的字符串数据类型数组时,它将创建256个不同的字符串,每个字符串能够存储尽可能多的字符,这些字符可以放入计算机内存中

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

这就是为什么我们需要像
字符值[256]
这样的单个字符数组,以使两侧的数据类型相同

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
字符串是字符的组合

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

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

这就是为什么我们需要像
字符值[256]
这样的单个字符数组,以使两侧的数据类型相同

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

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
字符串是字符的组合

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

如果您可以说明在字符串数组中存储256个字符的目的,我们可以指导您选择更合适的STL或其他解决方案

如果您真的想像数组一样使用它,为什么不简单地像字符数组或字符的std::vector那样使用它呢

如果要使用std::string,请尝试以下操作:

   string values[256];
   for (int i=0; i<256; i++){
        char temp = i;
        values[i] = temp;
   }
   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.
string-str;
str.reserve(256);
str.clear();
迭代器iter;

对于(i=0;i我们有一个从0到127的标准ASCII字符集和一个从128到255的扩展ASCII字符集

如果您可以说明在字符串数组中存储256个字符的目的,我们可以指导您选择更合适的STL或其他解决方案

如果您真的想像数组一样使用它,为什么不简单地像字符数组或字符的std::vector那样使用它呢

如果要使用std::string,请尝试以下操作:

   string values[256];
   for (int i=0; i<256; i++){
        char temp = i;
        values[i] = temp;
   }
   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.
string-str;
str.reserve(256);
str.clear();
迭代器iter;

对于(i=0;i这是c++11中的一个单行程序:

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

iota位于
标题中,开始和结束位于
这是c++11中的一行代码:

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

iota在
标题中,开始和结束在

字符串更改为
字符将已经起作用。ASCII集中只有128个字符。据我所知,该代码没有任何问题。我感觉
字符串
正在被键入其他内容。OP,你能确认吗?好的,是的在有意义。你可能应该编辑你的帖子以反映你的原始代码。将
string
更改为
char
已经可以了。ASCII集中只有128个字符。据我所知,这段代码没有问题。我感觉
string
正在被键入其他内容。啊,你能不能继续公司?好的,这很有道理。你可能应该编辑你的帖子来反映你的原始代码。@RichardJ.RossIII他指出它应该有效,应该:)+1来自我。@RichardJ.RossIII他指出它应该有效,应该:)+1来自我。