作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我想连接一个 std::string
和 WCHAR*
,结果应该在 WCHAR*
中。
我试过下面的代码
size_t needed = ::mbstowcs(NULL,&input[0],input.length());
std::wstring output;
output.resize(needed);
::mbstowcs(&output[0],&input[0],input.length());
const wchar_t wchar1 = output.c_str();
const wchar_t * ptr=wcsncat( wchar1, L" program", 3 );
我遇到了以下错误
error C2220: warning treated as error - no 'object' file generated
error C2664: 'wcsncat' : cannot convert parameter 1 from 'const wchar_t *' to 'wchar_t*'
最佳答案
如果您调用 string.c_str()
要获取原始缓冲区,它将返回一个 const 指针以指示您不应尝试更改缓冲区。绝对不应该尝试将任何内容连接到它。使用第二个字符串类实例,让运行时为您完成大部分工作。
std::string input; // initialized elsewhere
std::wstring output;
output = std::wstring(input.begin(), input.end());
output = output + std::wstring(L" program"); // or output += L" program";
const wchar_t *ptr = output.c_str();
还要记住这一点。一旦“output”超出范围并析构,“ptr”将失效。
关于C++/将 std::string 和 wchar* 连接到 wchar*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15150946/
我正在开发一个 voip 调用应用程序。我需要做的是在接到来电时将 Activity 带到前台。我在应用程序中使用 Twilio,并在收到推送消息时开始调用。 问题是我试图在接到任何电话时显示 Act
我是一名优秀的程序员,十分优秀!