我有一个字符串类型,我试图通过char将其复制到另一个字符串类型char但当我尝试显示新复制的输出时,它将变为空白。当我尝试通过char为该复制的字符串长度输出char时,它就好了。请参阅此小代码和输出以便更好地理解。
#include <iostream>
#include <string>
using namespace std;
int main()
{
string name = "Tom";
string temp;
int i = 0;
for(; i < name.length(); ++i)
{
temp[i] = name[i];
}
cout<<name<<endl; //gives the output Tom
cout<<temp<<endl; //gives blank
for(int i = 0; i < name.length(); ++i)
{
cout<<temp[i]; //gives output char by char
}
}
输出:
Tom
Tom
我知道还有其他可能的方法来实现我想要做的事情,但只是出于思考尝试了这个并且它没有用。所以寻找一些解释。
答案 0 :(得分:2)
请注意,temp
为空,其长度为0
。然后temp[i] = name[i];
会导致undifined behavior;一切皆有可能,但没有任何保证。
你可以给它一个初始长度,如:
string name = "Tom";
string temp(name.length(), '\0');
答案 1 :(得分:0)
您必须为临时字符串分配数据以更改其中的任何数据。
string temp(name.length(),'\0');
答案 2 :(得分:0)
for(; i < name.length(); ++i) temp.push_back(name[i]);
不要分配。