草庐IT

utf8mb_unicode_ci

全部标签

c++ - 使用 gcc 编译更大的(~6MB)映射初始化 C++ 文件

我正在尝试编译一个大约5.7MB的C++文件。我正在64位Linux系统上构建64位Linux可执行文件。不幸的是,g++4.7.2不合作:g++:internalcompilererror:Killed(programcc1plus)通过top观察表明进程在此之前达到了大约2.2GB的内存。我尝试设置--paramgcc-min-expand=0并尝试使用--paramgcc-min-heapsize但这并没有解决问题。使用-O0禁用优化也无济于事。我也试过用clang编译,但结果是相似的。它在超过2GB的内存后发生了段错误。我没有尝试使用clang的任何额外选项,因为我对它不太熟悉

C++ ShiftJIS 到 UTF8 的转换

我需要转换双字节字符。在我的特殊情况下,将Shift-Jis转换成更好处理的东西,最好是使用标准C++。以下问题最终没有解决方法:DoublebyteencodingsonMSVC(std::codecvt):Leadbytesnotrecognized那么有没有人对如何使用C++标准处理这种转换提出建议或引用? 最佳答案 通常我会推荐使用ICU库,但仅就此而言,使用它的开销太大了。首先是一个转换函数,它接受一个带有Shiftjis数据的std::string,并返回一个带有UTF8的std::string(注意2019:不知道它是

c++ - _T( ) 宏更改为 UNICODE 字符数据

我有一个UNICODE应用程序,我们使用_T(x)定义如下。#ifdefined(_UNICODE)#define_T(x)L##x#else#define_T(x)x#endif我知道L被定义为wchar_t,它在任何平台上都是4个字节。如果我错了,请纠正我。我的要求是我需要L为2个字节。因此,作为编译器hack,我开始使用-fshort-wchargcc标志。但现在我需要将我的应用程序移动到zSeries,在该平台上我看不到-fshort-wchar标志的效果。为了能够在zSeries上移植我的应用程序,我需要修改_T()宏,即使在使用L##x并且不使用-fshort-wchar标

c++ - 将字符串宏/常量转换为宽字符/Unicode

我有一个使用第3方库的UnicodeWin32应用程序,其中一些库为它们的版本信息提供常量作为#defined(窄)字符串。例如,libpng具有以下内容:#definePNG_LIBPNG_VER_STRING"1.5.4"#definePNG_HEADER_VERSION_STRING\"libpngversion1.5.4-July7,2011\n"我将各种静态链接的库版本信息附加到我的关于框以便于版本跟踪,并且将此常量转换为宽字符串似乎很简单。我的第一次尝试是TEXT(PNG_HEADER_VERSION_STRING),但失败了#define__TEXT(quote)L##q

C++ 保存带有 unicode 名称问题的文件 - 如何以跨平台方式正确保存 UTF-8 文件名?

我想保存一个名为ПриветМир.jpg的文件我收到一个字符串(例如从文件中读取)(其中包含unicode)但我的C++代码将其保存为ÐÑивеÑÐиÑ.jpg我该怎么做才能正确保存它?(顺便说一句,如果我只是将该字符串保存到文件中,它会正确保存,这意味着只有我保存文件名的方式有些错误。如何解决这个问题?)这是我保存文件的代码:voidfile_service::save_string_into_file(std::stringcontents,std::stringname){std::stringpathToUsers=this->root_path.string()+"

c++ - C++中如何设置文件编码格式为UTF8

我的软件的要求是包含导出数据的文件的编码应为UTF8。但是当我将数据写入文件时,编码始终是ANSI。(我使用Notepad++检查这个。)我目前正在做的是尝试通过读取文件、将其转换为UTF8并将文本写入新文件来手动转换文件。line是一个std::stringinputFile是一个std::ifstreampOutputFile是一个FILE*//...if(inputFile.is_open()){while(inputFile.good()){getline(inputFile,line);//1DWORDdwCount=MultiByteToWideChar(CP_ACP,0,

c++ - 如何将 ANSI 字节转换为 Unicode 字符串?

我有一个vector表示字符串中的字符。我想将这些字符解释为ASCII字符并将它们存储在Unicode(UTF-16)字符串中。当前代码假定vector中的字符是Unicode而不是ASCII。这适用于标准ASCII,但不适用于扩展ASCII字符。这些字符需要使用通过GetACP()检索到的当前代码页进行解释。.我将如何使用这些ASCII字符创建Unicode(UTF-16)字符串?编辑:我相信解决方案应该与此处讨论的宏有关:http://msdn.microsoft.com/en-us/library/87zae4a3(v=vs.80).aspx我只是不确定实际的实现情况如何。int

c++ - Boost.Regex 支持 icu/unicode

如何构建支持icu/unicode的Boost.Regex?我的编译器是GCC,IDE是EclipseC++。如何使用Eclipse配置二进制文件?我试着这样做“bjam--sHAVE_ICU=1toolset=gcc”。但它没有用。当我使用“bjam-has_icu”检查是否启用了icu支持时,我仍然得到“有icu构建:否”。 最佳答案 我使用-sICU_PATH=构建针对ICU的Boost和-sICU_LINK="-L".我已经看到Boost也无法正确检测ICU,并且需要修补文件has_icu_test.cpp(只需从它的mai

c++ - C++ 编译器可以规范化 Unicode 标识符吗?

在C++中,我们可以在标识符中使用各种Unicode字符。例如,您可以将变量命名为résumé。那些带重音的e可以用不同的方式表示:作为预组合字符或作为带有组合重音字符的普通e。许多应用normalize这样的字符串,以便看似相同的字符串实际上匹配。查看C++标准,我没有看到任何要求编译器规范化标识符的内容,因此变量résumé可能不同于变量résumé。(在我的测试中,似乎MSVC和clang都没有规范化标识符。)是否有什么禁止编译器选择范式?如果不是,在什么地方phaseoftranslation应该规范化吗?[明确一点:我说的是标识符,而不是字符串文字。]

c++ - MFC 应用程序到 Unicode/MBCS 的分段转换

我有一个大型MFC应用程序,我正在扩展它以允许多语言输入。目前我需要允许用户在单个对话框的编辑框中输入Unicode数据。有没有办法在不为整个应用程序打开UNICODE或MBCS的情况下执行此操作?我现在只需要转换应用程序的一小部分。是否可以分段执行此操作?如果可以,如何执行?说明:我可以使用::GetWindowTextW()从窗口中获取Unicode信息。我想弄清楚如何让用户在窗口中输入Unicode文本。目前,用户在windows-1252代码页之外输入的字符显示为“?”。有办法解决这个问题吗? 最佳答案 要允许CEdit显示