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
结果是空的。
看看cppreference,std::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);
有没有办法在 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
结果是空的。
看看cppreference,std::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);