如何€áa¢cée£在控制台/屏幕上打印如下字符串?我试过这个:
#include <iostream>
#include <string>
using namespace std;
wstring wStr = L"€áa¢cée£";
int main (void)
{
wcout << wStr << " : " << wStr.length() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是行不通的.即使令人困惑,如果我€从字符串中删除,打印输出就像这样:?a?c?e? : 7但是€在字符串中,€字符后没有任何内容被打印出来.
如果我在python中编写相同的代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
wStr = u"€áa¢cée£"
print u"%s" % wStr
Run Code Online (Sandbox Code Playgroud)
它在同一台控制台上正确打印出字符串.我在c ++中缺少什么(好吧,我只是一个菜鸟)?干杯!!
#include <iostream>
#include <string>
using namespace std;
string wStr = "€áa¢cée£";
char *pStr = 0;
int main (void) …Run Code Online (Sandbox Code Playgroud) C++ 和 UTF8 的延续- 为什么不直接替换 ASCII?
为什么没有std::ustring可能更换两个std::string,std::wstring在新的应用?
当然在标准库中有相应的支持。类似于 howboost::filesystem3::path不关心字符串表示并同时使用std::string和std::wstring。
我需要一个C++代码来将给定的字符串转换wchar_t*为UTF-16字符串.它必须适用于Windows和Linux.我在搜索过程中浏览了很多网页,但这个主题对我来说仍然不清楚.
据我所知,我需要:
setlocale使用LC_TYPE和UTF-16编码进行呼叫.wcstombs转换wchar_t为UTF-16字符串.setlocale以恢复以前的区域设置.你知道我可以wchar_t*以便携方式(Windows和Linux)转换为UTF-16的方式吗?
我搜索了很多,但找不到任何东西:
unsigned int unicodeChar = 0x5e9;
unsigned int utf8Char;
uni2utf8(unicodeChar, utf8Char);
assert(utf8Char == 0xd7a9);
Run Code Online (Sandbox Code Playgroud)
是否有一个库(最好是boost)实现类似于uni2utf8的东西?
请考虑以下代码段:
#include <stdio.h>
#include <stdarg.h>
void display(int num, ...) {
char c;
int j;
va_list ptr;
va_start(ptr,num);
for (j= 1; j <= num; j++){
c = va_arg(ptr, char);
printf("%c", c);
}
va_end(ptr);
}
int main() {
display(4, 'A', 'a', 'b', 'c');
return 0;
}
Run Code Online (Sandbox Code Playgroud)
该程序给出了运行时错误,因为vararg自动将char提升为int,在这种情况下我应该使用int.
当我使用vararg时,允许使用哪些类型,如何知道使用哪种类型以及避免此类运行时错误.
我如何可以比较wstring,比如L"Hello",一个string?如果我需要相同的类型,我怎样才能将它们转换为相同的类型?
示例:假设f是模板函数,有两个参数:
f (1, 2)在这个调用中,模板函数是否假设它的参数是int,或者是short什么?
编辑1:
模板函数声明:
template <typename dataTypeA, typename dataTypeB> dataTypeB functionX (dataTypeA argA, dataTypeB argB)
可能重复:
哪个passwordchar在winforms文本框中显示黑点(?)?
C++ 11中字符串文字的Unicode编码
我想使用代码来显示密码或使其成为像•
textBoxNewPassword.PasswordChar = (char)0149;
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我很高兴标准库能够获得一个to_string功能,但现在我处于WTF模式.首先,为什么不是这个模板,其次如果它不是返回值的模板那么为什么在世界上他们没有to_u16string()和to_u32string()功能.
我知道有提升词法演员,但我很想知道是否有一种标准的方法来获得我想要的东西而无需手动编写这些功能?
编辑:使事情更糟糕的提升1.46也不喜欢u16string :(
boost::lexical_cast<u16string>(22.44);
Run Code Online (Sandbox Code Playgroud)
在抛出'boost :: exception_detail :: clone_impl的实例后终止调用
'what():错误的词法转换:源类型值无法解释为目标