C++ 将子字符串从const char*复制到std::string
是否有允许将子字符串复制到std::string的复制函数 范例-C++ 将子字符串从const char*复制到std::string,c++,C++,是否有允许将子字符串复制到std::string的复制函数 范例- const char *c = "This is a test string message"; 我想将子字符串“test”复制到std::string。您可以使用这个std::string的构造函数: string(const string& str, size_t pos, size_t n = npos); 用法: std::cout << std::string("012345", 2, 4) &
const char *c = "This is a test string message";
我想将子字符串“test”复制到std::string。您可以使用这个
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;
(编辑:showcase示例)您可以编写一个:
#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 SubstringOfCString(const char*cstr,
尺寸(开始,尺寸长度)
{
assert(start+length您可以使用std::string
以C字符串的子字符串对其进行初始化,例如:
const char *sourceString = "Hello world!";
std::string testString(sourceString + 1, sourceString + 4);
您可能希望使用std::string\u视图(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;
}
#包括
#包括
int main()
{
static const auto s{“这是一个测试字符串消息”};
字符串视图v{s+10,4};
std::cout实际上,如果你以那种方式使用构造函数,你会隐式地调用std::string(std::string(“012345”),2,4);
,即双重构造(一个是临时的)。当然你是对的,但我看不出有什么问题(不是像这样措辞的问题)。然后是std::string(const char *字符,sisigt chassLin)< /C>构造函数,它将被写为“代码> STD::String(“012345”+2, 4);< /代码>或“代码> STD::CUT+1,用于指出指针只是另一个随机访问迭代器。简单漂亮!”Doc Brown,史葛,谢谢!我想我们真的回到了1985,用C++和ALL!!)完全错误-my_c
指向“这是一条测试字符串消息”
,您可以通过将此示例制作成程序看到这一点。
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"
#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;
}