【问题标题】:Is there a better way to append characters into string?有没有更好的方法将字符附加到字符串中?
【发布时间】:2023-01-25 21:57:49
【问题描述】:

我只是好奇,可能是将字符附加到字符串中的更好方法吗? 我的代码:

    char arr[data.length()];
    strcpy(arr, data.c_str()); 

    string n2,n3,n0,n1;
    string new_var= "";
    n2 = data[2];
    n3 = data[3];
    n0 = data[0];
    n1 = data[1];
    new_var.append(n2);
    new_var.append(n3);
    new_var.append(n0);
    new_var.append(n1);

【问题讨论】:

  • 以什么方式更好?如果你的代码没有问题,你可以在这里提问:codereview.stackexchange.com
  • 抱歉,是我的错。
  • @George:字符数是否像您的示例那样固定?没有必要附加首先,如果您可以直接构建它。
  • new 是 C++ 中的关键字。您不能将变量命名为new
  • char arr[data.length()] 不是有效的 C++。 C++ 不支持变长数组。

标签: c++ arrays append


【解决方案1】:

您的代码中有很多不必要的样板文件。最简单的方法:

std::string data = "Hello, World!";
std::string newStr; // new is a keyword, it can't be a name
newStr.push_back(data[2]);
newStr.push_back(data[3]);
newStr.push_back(data[0]);
newStr.push_back(data[1]);

或者,使用初始化列表更简单:

std::string data = "Hello, World!";
std::string newStr{data[2], data[3], data[0], data[1]};

【讨论】:

  • 根本不需要 append 调用,至少在 OP 的情况下(字符已经可用);您可以直接使用 std::string newStr({data[2], data[3], data[0], data[1]}); 构建(需要 C++11,仅此而已)。
【解决方案2】:

您可以使用 += 运算符将字符附加到字符串的末尾。这是一个例子:

std::string str = "Hello, ";
str += 'w';
str += 'o';
str += 'r';
str += 'l';
str += 'd';

另一种方法是使用字符串的 push_back() 方法。

std::string str = "Hello, ";
str.push_back('w');
str.push_back('o');
str.push_back('r');
str.push_back('l');
str.push_back('d');

【讨论】:

  • 顺便说一句,appendpush_back+= 一样“好”。您的回答可以理解为有理由更喜欢push_back+=
  • 只是想展示更多他可能忘记的可能性,尽管 push_back 不允许附加完整的字符串
猜你喜欢
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-08
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多