c++ - 如何在不定义目标变量大小的情况下将字符串变量逐个字符复制到另一个字符?

标签 c++ string

我正在编写一个程序,我需要将一个字符串(最初长度未知)逐个字符地复制到另一个字符串。

我编写的代码运行完美。

string a = "Hello";
string b( a.length(), 'a');
for (int i = 0; i < a.length(); i++)
    b[i] = a[i];

但由于 C++ 中字符串的大小是动态计算的

string k = "Hello";
string l = "Hello World";
string m = k;
m = l;

不会报错。因此很明显,字符串变量的大小是根据需要动态变化的。

所以我尝试了同样的方法,但没有定义变量 b 的大小。

string a = "Hello";
string b;
for (int i = 0; i < a.length(); i++)
    b[i] = a[i];

但在这种情况下,我的程序崩溃并提示 String subscript out of range

在这种情况下,为什么不增加变量 b 的大小? 错误的原因是什么?如何在不提及任何变量的大小的情况下实现这一点?

最佳答案

如果必须,可以使用push_back:

string a = "Hello";
string b;
for (int i = 0; i < a.length(); i++)
    b.push_back(a[i]);

甚至1

string a = "Hello";
string b;
for (auto c : a)
    b.push_back(c);

但为什么呢?

引用:http://en.cppreference.com/w/cpp/string/basic_string/push_back


1 但是,如果 a 以任何方式更改,请不要这样做:底层迭代器将失效。

关于c++ - 如何在不定义目标变量大小的情况下将字符串变量逐个字符复制到另一个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47290210/

相关文章:

c++ - 将 Crashpad 与 MacOS Qt 应用程序集成

c++ - 为什么私有(private)构造函数阻止对象创建 C++

c++ - QGraphicsScene 缺少特定项目更新

c++ - 256 位 Rijndael block 大小?

string - VBScript 中是否有任何内置函数可以将字符串重复 N 次?

需要 Java SE 数组帮助

在 C 中复制字母数字字符

c - 接受来自用户的二进制字符串并检查其在 C 中的有效性?

c++ - tensorflow C++ API : Difference between `fetch_outputs` and `run_outputs` in `Session::Run`

java - java中如何在字符串的字符两侧添加空格?