Есть ли способ скопировать строку из 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
оказывается пустым.
Заглянуть в cppreference, конструкторы std::basic_string
(класс шаблона позади std::string
), альтернатива (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 };
#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);