qq_54941014 2023-01-25 21:45 采纳率: 100%
浏览 50
已结题

关于C++汉英混合的字符串寻找指定子字符串和截取

C++汉英混合的字符串截取

目前来看s.find(str)返回值都是-1,用s.substr(idx)从八位以后截取就会报错

#include<iostream>
#include<string>
#include<regex>
#include<cstdlib>
#include< locale>
#include <codecvt>
using namespace std;
void cut(wstring a) {
    wstring next;
    wstring h = L"荣耀";
    int head,end;
    wregex regexstr(L"^0.*");   //输入多行字符串处理,直到输入一个以0开头的字符串结束。
    wsmatch resault;
    if (regex_match(a, resault, regexstr)) cout<<"back"<<endl;
    else {
        getline(wcin, next);
        cut(next);        //用递归实现处理完一并输出
    }
    head = a.find(h);   //返回值恒为-1
    if(head>0)
        wcout<<a.substr(head)<<endl;     //只有把head改成具体值(<=8)可以截取
}
int main()
{
    wstring a;
    getline(wcin,a);
    cut(a);
}

img

刚学c++,一开始string处理不了汉字改为wstring,想先获取指定字符串位置再截取,但是s.find和s.substr现在都有问题,求拯救!!

img

  • 写回答

2条回答 默认 最新

  • 关注
    #include <iostream>
    #include <locale>
    #include <regex>
    #include <string>
    
    using namespace std;
    
    void cut(wstring a)
    {
        wstring next;
        wstring const h = L"荣耀";
        size_t head;
        wregex const regexstr(
            L"^0.*"); // 输入多行字符串处理,直到输入一个以0开头的字符串结束。
        wsmatch resault;
        if (regex_match(a, resault, regexstr))
        {
            cout << "back" << endl;
        }
        else
        {
            getline(wcin, next);
            cut(next); // 用递归实现处理完一并输出
        }
        head = a.find(h); // 返回值恒为-1
        if (head != -1)
        {
            wcout << a.substr(head) << endl; // 只有把head改成具体值(<=8)可以截取
        }
    }
    
    auto main() -> int
    {
        wstring a;
        wcin.imbue(locale(""));
        wcout.imbue(locale(""));
        getline(wcin, a);
        cut(a);
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 2月2日
  • 已采纳回答 1月25日
  • 创建了问题 1月25日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?