我正在编写一个程序,我需要将一个字符串(最初长度未知)逐个字符地复制到另一个字符串。
我编写的代码运行完美。
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/