jjzjj

c++ - 字符串比较。如何比较字符串与 std::wstring? WRT 结构体

我正在尝试比较两种格式,我认为它们在某种程度上是兼容的,因为它们通常都是字符串。我曾尝试使用字符串和std::wstring执行strcmp,而且我确信C++专家知道,这根本无法编译。是否可以比较这两种类型?这里有一个简单的转换吗? 最佳答案 您需要将char*字符串(ISOC术语中的“多字节”)转换为wchar_t*字符串(ISOC术语中的“宽字符”)。执行此操作的标准函数称为mbstowcs("多字节字符串转宽字符串")注意:正如史蒂夫在评论中指出的那样,这是一个C99函数,因此不符合ISOC++标准,但可能会作为扩展由C++实

c++ - 如果没有正确删除,为什么 wstring::c_str 不会导致内存泄漏

代码段1:wchar_t*aString(){wchar_t*str=newwchar[5];wcscpy(str,"asdf\0");returnstr;}wchar_t*value1=aString();代码段2wstringwstr=L"avalue";wchar_t*value=wstr.c_str();如果代码段2中的值未被删除,则不会发生内存泄漏。但是,如果代码段1中的value1未被删除,则存在内存泄漏。wstring::c_str的内部代码在我看来是一样的。 最佳答案 一条重要规则:您必须对new创建的任何内容使用d

c++ - xcode std::wcout 与 wchar_t 或 std::wstring!

我正在尝试将xcode中的wstring/wchar_t打印到控制台,但不幸的是它只适用于基本字符(我认为是ascii)字符,其他所有字符都以数字显示,例如以下内容:std::cout当cout版本按预期打印“äöüu”时,我在使用wchar_t时得到以下信息:\344\366\374u关于如何解决这个问题有什么想法吗?我正在使用xcode3.2.264位和gcc4.2,文件编码设置为Unicode(UTF-8)谢谢! 最佳答案 我有一个类似的问题,但与wostream/wofstream相关。用谷歌搜索,这是答案:tc_ofstr

Visual Studio 2012 : LPCWSTR and wstring 中的 C++ 编译错误

以下代码在VisualStudio2010中编译但在VisualStudio2012RC中编译失败。#include//Windowsstuffstypedef__nullterminatedconstwchar_t*LPCWSTR;classCTestObj{public:CTestObj(){m_tmp=L"default";};operatorLPCWSTR(){returnm_tmp.c_str();}//returnsconstwchar_t*operatorstd::wstring()const{returnm_tmp;}//returnsstd::wstringprote

c++ - Boost C++ 跨平台 (Windows & Mac) std::wstring 序列化

我正在为Windows(使用VisualStudio2008)和Mac(使用GCC)构建的程序中使用BoostC++库实现序列化。该程序在大约30个类中使用宽字符串(std::wstring)。根据平台的不同,当我保存到文件时(通过boost::archive::text_woarchive),宽字符串在输出文件中的表示方式不同。在Windows下保存:H*e*l*l*o**W*o*r*l*d*!*...在MacOSX下保存:H***e***l***l***o******W***o***r***l***d***!***...其中*是NULL字符。当我尝试使用Mac构建读取在Window

c++ - 将非英文字符串存储在 std::string 中

我在std::wstring中有一个简单的字符串std::wstringtempStr=_T("F:\\Projects\\Current_자동_\\Cam.xml");我想将这个字符串存储在std::string中。我试过下面的代码,但结果与输入的字符串不一样std::wstringtempStr=_T("F:\\Projects\\Current_자동_\\Cam.xml");//setupconvertertypedefstd::codecvt_utf8_utf16convert_type;std::wstring_convertconverter;//useconverter(

c++ - PathGetArgs/PathRemoveArgs 与 CommandLineToArgvW - 有区别吗?

我正在研究一些路径解析C++代码,为此我一直在试验许多WindowsAPI。PathGetArgs/PathRemoveArgs和稍微按摩过的CommandLineToArgvW之间有区别吗?换句话说,除了长度/清洁之外,是这样的:std::wstringStripFileArguments(std::wstringfilePath){WCHARtempPath[MAX_PATH];wcscpy(tempPath,filePath.c_str());PathRemoveArgs(tempPath);returntempPath;}不同于此:std::wstringStripFileAr

c++ - 支持和反对在跨平台库中专门支持 std::wstring 的论点

我目前正在开发一个跨平台的C++库,我打算将其识别为Unicode。我目前通过typedef和宏为std::string或std::wstring提供编译时支持。这种方法的缺点是它迫使您使用L("string")之类的宏,并大量使用基于字符类型的模板。支持和反对仅支持std::wstring的论点是什么?仅使用std::wstring是否会阻碍首选UTF-8编码的GNU/Linux用户群? 最佳答案 很多人希望使用UTF-8(std::string)而不是UCS-2(std::wstring)的unicode。UTF-8是很多Lin

c++ - 无法跨 DLL 传递 std::wstring

我在VisualStudio2010中建立了一个项目来针对现有的MFCDLL编写单元测试。我正在使用单header单元测试框架,并链接到单元测试项目中的MFCDLL库包装器。我正在尝试构建一个采用std::wstring的类在它的构造函数中。这是我的测试结果:TEST_CASE("MyProject/MyTest","Dothetest."){MockDbServicemockDbService;Foobarfoo(L"{F00DFACE-FEED-DEAD-BEEF-C0FFEEDECADE}",mockDbService);foo.loadObject();REQUIRE(mock

c++ - 在 Boost::Program_Options 中,如何设置 wstring 的默认值?

我的下面的代码没有工作:wstringconfig_file;//Declareagroupofoptionsthatwillbe//allowedonlyoncommandlinepo::options_descriptiongeneric("Genericoptions");generic.add_options()("help,h","producehelpmessage")("config,c",po::wvalue(&config_file)->default_value(L"DXDrv.cfg"),"nameofafileofaconfiguration.");编译失败,错