我希望实现这样的目标: (A)(B)(C)(D)......(I)(J)
for (int i = 1; i <= 10; i++){
battlefield[i][0] = "(" + (64 + i) + ")";
我想知道将ASCII值放入String中,但它会导致错误:
表达式必须具有整数或未整合的枚举类型
如果我尝试编译它,我得到了
错误C2110:'+':无法添加两个指针
基本上,进行此编译的唯一方法是在(64 + i)之前添加to_string,但后来我得到了类似的东西: (65)(66)(67),虽然我想要那些ASCII值以下的字母
答案 0 :(得分:1)
在使用std::string
之前,您必须将字符串文字转换为operator+
。这样做的一种方式
std::vector<std::string> battlefield(10);
for (char i = 0; i < 10; i++)
{
battlefield[i] = "(";
battlefield[i] += 'A' + i;
battlefield[i] += ")";
}
答案 1 :(得分:1)
您的串联表达式不正确,因为它混合了类型:
"(" + (64 + i) + ")"
您可以通过将中间部分(64 + i)
设为单字符字符串而不是int
来修复它:
battlefield[i][0] = "(" + string(1, 64+i) + ")";
构造函数string(1, 64+i)
从字符64+i
的一个重复(第一个参数)创建一个字符串(第二个参数)。使用此表达式,C ++具有足够的信息来构造"("
和")"
的字符串对象。
答案 2 :(得分:1)
我想我倾向于:
使用从零开始的索引
使用字符文字&#39; A&#39;作为基础,以使转换显式。
将字符串的生成提升为一个小函数
这样的事情:
public class MyObj implements Serializable{
......
}
答案 3 :(得分:0)
你可以试试这个:
battlefield[i][0] = std::string("(") + (char) ('A'+i) + std::string(")");
错误消息的原因是,当您编写"("
时,您使用的是原始的C风格char*
,并且您无法添加两个指针(您的错误消息所示)。通过使用std::string
构造函数,您强制将值视为字符串,然后+
运算符用于连接。
答案 4 :(得分:0)
您可以将ASCII字符连续布局用于字母字符,编写for
循环,其char
索引从'A'
转到{{1将当前字符连接到结果字符串
在连接期间,您也可以添加括号'J'
和(
。
E.g:
)
编辑如果您想要#include <iostream>
#include <string>
int main() {
std::string result;
for (char ch = 'A'; ch <= 'J'; ++ch) {
result += '(';
result += ch;
result += ')';
}
std::cout << result << '\n';
}
,可以使用以下内容修改上述代码:
vector<string>