我正在尝试将前 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*'
这是c ++ 11中的一个衬里:
std::iota(std::begin(values), std::end(values), '\0');
iota 在<algorithm>
header 中, begin 和 end 在<iterator>
.
实际上,当您声明这样一个字符串数据类型的数组时,它将创建 256 个不同的字符串,每个字符串都能够存储尽可能多的字符,因为它们可以放入计算机的内存中
并且每个变量likevalues[i]
都是指向内存中字符串的指针,这就是错误的原因。字符到字符指针
这就是为什么我们需要单个字符数组char values[256]
来使两边的数据类型相同。
但是如果您想以相同的方式执行此操作,则需要将 ascii 值转换为字符串。
................................................ 一个字符串是一个字符组合
我们有一个从 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.