在另一个字符串中使用char复制字符串char

时间:2017-05-16 00:28:49

标签: c++ string c++11

我有一个字符串类型,我试图通过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 

我知道还有其他可能的方法来实现我想要做的事情,但只是出于思考尝试了这个并且它没有用。所以寻找一些解释。

3 个答案:

答案 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]);

不要分配。