用ASCII连接字符串

时间:2017-03-01 10:25:42

标签: c++ string ascii

我希望实现这样的目标: (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值以下的字母

5 个答案:

答案 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] += ")";
}

demo

答案 1 :(得分:1)

您的串联表达式不正确,因为它混合了类型:

"(" + (64 + i) + ")"

您可以通过将中间部分(64 + i)设为单字符字符串而不是int来修复它:

battlefield[i][0] = "(" + string(1, 64+i) + ")";

构造函数string(1, 64+i)从字符64+i的一个重复(第一个参数)创建一个字符串(第二个参数)。使用此表达式,C ++具有足够的信息来构造"("")"的字符串对象。

答案 2 :(得分:1)

我想我倾向于:

  1. 使用从零开始的索引

  2. 使用字符文字&#39; A&#39;作为基础,以使转换显式。

  3. 将字符串的生成提升为一个小函数

  4. 这样的事情:

    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>