有没有办法在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
原来是空的。
答案 0 :(得分:6)
查看std::basic_string
的构造函数std::string
(const 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)
#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);