注册 登录
编程论坛 C语言论坛

求助,字符串编辑正常,控制台无输出。。。

追梦人zmrghy 发布于 2022-06-05 18:56, 1298 次点击
求助,字符串编辑正常,控制台无输出。。。
今天,在复习最近学习的知识点。。。
发现,以前解决过的这个问题,又忘了。。。
脑子全是浆糊,就是想不起来,是如何解决地了。。。
只好,又来麻烦大家了。。。
程序代码:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
    wstring str = L"空中浩劫第一季(国语配音) - 1.空中浩劫S01E01:联合航空811号班机(国语配音无字幕)(Av802929849,P1).mp4";
    wregex pattern(L".*[::](.+)[((]国.*");
    wstring result = regex_replace(str, pattern, L"$1.mp4");

    setlocale(LC_ALL, "chs");
    std::wcout << result << endl;
    return 0;
}

只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
4 回复
#2
rjsp2022-06-06 09:38
你把 源文件编码 和 编译参数 贴出来!
比如,我的 main.cpp 的编码是
utf-8
,编译参数是
g++.exe -Wall -fexceptions -O2 -std=c++20 -finput-charset=UTF-8 -fexec-charset=GBK -fwide-exec-charset=UTF-16LE  -c D:\sources\codeblocks_console_cpp002\main.cpp -o obj\Release\main.o
g++.exe  -o bin\Release\codeblocks_console_cpp002.exe obj\Release\main.o obj\Release\Untitled1.o  -s  



[此贴子已经被作者于2022-6-6 09:40编辑过]

#3
追梦人zmrghy2022-06-06 09:53
回复 2楼 rjsp
程序代码:
#include <iostream>
#include <regex>
using namespace std;
int main()
{
    wstring str = L"空中浩劫第一季(国语配音) - 1.空中浩劫S01E01:联合航空811号班机(国语配音无字幕)(Av802929849,P1).mp4";
    wregex pattern(L".*[::](.+)[((]国.*");
    wstring result = regex_replace(str, pattern, L"$1.mp4");

    setlocale(LC_ALL, "chs");
    std::wcout << result << endl;
    return 0;
}


main.cpp 是ANSI
只有本站会员才能查看附件,请 登录
#4
追梦人zmrghy2022-06-06 10:08
回复 2楼 rjsp
还是没有C++20
重新安装Win11 第一次打开Code::Blocks是有C++20的。
只要选择 -std=c++20
编译运行,就报这个错误。
再打开Code::Blocks设置,就没有C++20的。
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录
#5
rjsp2022-06-06 14:55
回复 3楼 追梦人zmrghy
你贴的图片中,有两个 -finput-charset 并且设置的值还不一样 ???

main.cpp 既然是 ANSI 编码,那么 -finput-charset 就应该设置成 -finput-charset=GBK
-fwide-exec-charset=UTF-16LE 也要设置,因为 中文windows的exe 中,char是GBK编码,wchar_t是utf16le编码
1