簡體   English   中英

將子字符串從const char *復制到std :: string

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM