C ++复制string的指定索引之间的任何子字符串

时间:2017-08-03 08:02:31

标签: c++ string substring

我对C ++中的字符串有疑问。假设我有一个如下所示的unicode字符串:

std::wstring S = L"NAME: STUPID";

以上字符串可以像L"AGE: STUPID"L"BEHAVIOR: STUPID"L"BEHAVIOR: STUPID; NAME: ANONYMOUS"

我想从上面的字符串中提取单词STUPID。复制应从给定单词的长度开始(例如NAMEBEHAVIOR的长度),并在第一个找到的分号(;)处停止。复制应该从主字符串完成。 (例如L"NAME: STUPID")。

我尝试过:

LPCWSTR ExtractSubStringFromString(LPCWSTR & Type, LPCWSTR & String) {

    std::wstring S = std::wstring(String);

    if (S.find(L";") != std::wstring::npos) // MAIN STRING CONTAINS A SEMICOLON
    {
        std::wstring S = std::wstring(String + std::wstring(Type).length(),  // << CANNOT THINK HOW TO COPY SUBSTRING HERE.
    }
    else { NO SEMICOLON, ONLY CAN BE A ONE WORD }
}

1 个答案:

答案 0 :(得分:2)

我认为您正在寻找substr的{​​{1}}方法。这是您要实现的目标的一个实例:

std::wstring

为输入std::wstring ExtractSubStringFromString(const std::wstring String) { std::wstring S = std::wstring(String); size_t semicolon = S.find(L';'); // semicolon found? if (semicolon != std::wstring::npos) { // find colon between string start and semicolon size_t colon = S.find(L':', 0); if (colon != std::wstring::npos && colon < semicolon) { // take string after colon to the semicolon return S.substr(colon + 1, semicolon - colon - 1); } // invalid input parameter return L""; } size_t colon = S.find(L':'); if (colon != std::wstring::npos) { size_t count = std::wstring::npos; if (S[S.length() - 1] == L']') count = S.length() - 1 - colon - 1; // return substring after colon to the end return S.substr(colon + 1, count); } // invalid input parameter return L""; } STUPID<anything>: STUPID

返回[<anything>: STUPID]

你可能想要处理空白。