| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 670 人关注过本帖
标题:求助:俩个问题,正则问题 和 vector容器问题
只看楼主 加入收藏
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
结帖率:97.26%
收藏
已结贴  问题点数:20 回复次数:2 
求助:俩个问题,正则问题 和 vector容器问题
程序代码:
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
    {
        Regex^ re1 = gcnew Regex(".?:?[\\\\]?(.*)");
        std::vector<std::string> StrArr = { "E:\\编程教程\\VC++ 视频教程", ":\\编程教程\\VC++ 视频教程", "\\编程教程\\VC++ 视频教程", "编程教程\\VC++ 视频教程", "D:\\123\\abc\\ABC", ":\\123\\abc\\ABC", "\\123\\abc\\ABC", "123\\abc\\ABC" };
        //std::vector<String^> StrArr = { "E:\\编程教程\\VC++ 视频教程", ":\\编程教程\\VC++ 视频教程", "\\编程教程\\VC++ 视频教程", "编程教程\\VC++ 视频教程", "D:\\123\\abc\\ABC", ":\\123\\abc\\ABC", "\\123\\abc\\ABC", "123\\abc\\ABC" };
        for (auto i : StrArr)
        {
            textBox1->Text += gcnew String(i.c_str()) + "  ->  " + gcnew String(re1->Replace(gcnew String(i.c_str()), "$1")) + "\r\n";
            //textBox1->Text += i + "  ->  " + re1->Replace(i, "$1") + "\r\n";
        }
        textBox1->Text += textBox2->Text +"  ->  "+ re1->Replace(textBox2->Text, "$1") + "\r\n";
    }

图片附件: 游客没有浏览图片的权限,请 登录注册


正则问题
第4行少了一个字,第8行少了一个字。  如何写才能让字符串开头 没有盘符,冒号 反斜杠,又不少其它字符。





程序代码:
    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) 
    {
        Regex^ re1 = gcnew Regex(".?:?[\\\\]?(.*)");
        //std::vector<std::string> StrArr = { "E:\\编程教程\\VC++ 视频教程", ":\\编程教程\\VC++ 视频教程", "\\编程教程\\VC++ 视频教程", "编程教程\\VC++ 视频教程", "D:\\123\\abc\\ABC", ":\\123\\abc\\ABC", "\\123\\abc\\ABC", "123\\abc\\ABC" };
        std::vector<String^> StrArr = { "E:\\编程教程\\VC++ 视频教程", ":\\编程教程\\VC++ 视频教程", "\\编程教程\\VC++ 视频教程", "编程教程\\VC++ 视频教程", "D:\\123\\abc\\ABC", ":\\123\\abc\\ABC", "\\123\\abc\\ABC", "123\\abc\\ABC" };
        for (auto i : StrArr)
        {
            //textBox1->Text += gcnew String(i.c_str()) + "  ->  " + gcnew String(re1->Replace(gcnew String(i.c_str()), "$1")) + "\r\n";
            textBox1->Text += i + "  ->  " + re1->Replace(i, "$1") + "\r\n";
        }
        textBox1->Text += textBox2->Text +"  ->  "+ re1->Replace(textBox2->Text, "$1") + "\r\n";
    }


已启动生成...
1>------ 已启动生成: 项目: RegexPractice, 配置: Debug x64 ------
1>RegexPractice.cpp
1>D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\vector(900,1): error C3699: “&&”: 不能在类型“_Ty”上使用此间接寻址
1>        with
1>        [
1>            _Ty=System::String ^
1>        ]
1>C:\Users\Administrator\source\repos\RegexPractice\RegexPractice\Form1.h(109): message : 查看对正在编译的 类 模板 实例化“std::vector<System::String ^,std::allocator<_Ty>>”的引用
1>        with
1>        [
1>            _Ty=System::String ^
1>        ]
1>D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.32.31326\include\vector(943,1): error C3699: “&&”: 不能在类型“_Ty”上使用此间接寻址
1>        with
1>        [
1>            _Ty=System::String ^
1>        ]
1>已完成生成项目“RegexPractice.vcxproj”的操作 - 失败。
========== “生成”: 0 成功,1 失败,0 更新,0 已跳过 ==========


vector容器问题
std::vector<std::string>StrArr 可以, 如果换成  std::vector<String^> StrArr 就出这个问题了。不知道如何解决。。。


Form1.rar (1.33 KB)


[此贴子已经被作者于2022-12-14 13:42编辑过]

搜索更多相关主题的帖子: VC++ string 教程 abc 编程 
2022-12-14 13:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
对于 123\\abc\\ABC,第一个字符 1 是不是被 .?:?[\\\\]?(.*) 中的 .? 给吃了?
好在你还没写 1\\abc\\ABC,否则 1\\ 两个字符被吃掉。

顺便问一下,为什么不用 std::filesystem,却用 regex 这种丑陋低效(而且理论上无法完成path检索)的东西?
2022-12-14 15:49
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:406
专家分:190
注 册:2021-4-9
收藏
得分:0 
回复 2楼 rjsp
不知道,怎么写了刚能达到时需要的效果,才来发帖请教的。
2022-12-14 16:23
快速回复:求助:俩个问题,正则问题 和 vector容器问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026332 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved