我正在尝试将前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*'
答案 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.