копирование из const char * в строку

Есть ли способ скопировать строку из 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 оказывается пустым.

-2

Решение

Заглянуть в cppreference, конструкторы std::basic_string (класс шаблона позади std::string), альтернатива (5):

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

cout<<s1<<endl;
6

Другие решения

Вам следует или инициализировать 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 };
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);
-1
По вопросам рекламы [email protected]