C++ - 从 const char* 复制到字符串

C++ - copying from const char* to string

有没有办法在 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 结果是空的。

看看cppreferencestd::basic_string的构造函数(std::string后面的模板class),备选方案(5):

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

cout<<s1<<endl;

您应该或者初始化 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 };

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);