[英]Copy a substring from const char* to std::string
是否有任何可用的副本函数允许子字符串到std :: string?
示例 -
const char *c = "This is a test string message";
我想将子字符串“test”复制到std :: string。
您可以使用std::string
迭代器构造函数使用C字符串的子字符串对其进行初始化,例如:
const char *sourceString = "Hello world!";
std::string testString(sourceString + 1, sourceString + 4);
好吧,你可以写一个:
#include <assert.h>
#include <string.h>
#include <string>
std::string SubstringOfCString(const char *cstr,
size_t start, size_t length)
{
assert(start + length <= strlen(cstr));
return std::string(cstr + start, length);
}
你可以使用这个std::string
的构造函数:
string(const string& str, size_t pos, size_t n = npos);
用法:
std::cout << std::string("012345", 2, 4) << std::endl;
const char* c = "This is a test string message";
std::cout << std::string(c, 10, 4) << std::endl;
输出:
2345
test
(编辑:展示示例)
您可能希望使用std::string_view
(C ++ 17以上)作为std::string
的替代方法:
#include <iostream>
#include <string_view>
int main()
{
static const auto s{"This is a test string message"};
std::string_view v{s + 10, 4};
std::cout << v <<std::endl;
}
const char *c = "This is a test string message";
std::string str(c);
str.substr(0, 4);
const char *my_c = str.c_str(); // my_c == "This"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.