C ++ - 从const char *复制到string

时间:2016-12-22 17:43:27

标签: c++ string copying

有没有办法在C ++中将字符串从const char*复制到string?我正在尝试做这样的事情:

#include <iostream>
#include <string.h>

using namespace std;

int main(){

    string s1;
    const char* pStr = "Sample Text";

    for(int i = 0; i < strlen(pStr); i++)
        s1[i] = pStr[i];

    cout<<s1<<endl;

    return 0;
}

就我而言,s1原来是空的。

3 个答案:

答案 0 :(得分:6)

查看std::basic_string的构造函数std::stringconst char* pStr = "Sample Text"; string s1(pStr); cout<<s1<<endl; 后面的模板类),替代(5):

row

答案 1 :(得分:1)

你应 初始化s1,使其大小等于strlen(pStr),只需将每个字符附加到s1。

使用特定大小启动s1将作为下面给出的代码行。

string s1(strlen(pStr));

同样,追加每个角色如下:

for(int i = 0; i < strlen(pStr); i++)
    s1.push_back(pStr[i]);

但是,除非您有特定的理由调查每个字符,否则我建议根本不使用循环,并按如下方式启动s1。

string s1{ pStr };

答案 2 :(得分:-1)

C ++ 11

#include <algorithm>
#include <iterator>

string s1;
const char* pStr = "Sample Text";

std::copy(pStr, pStr + strlen(pStr), std::back_inserter(s1));

另一种方式:

string s1;
const char* pStr = "Sample Text";

s1.assign(pStr);