相关疑难解决方法(0)

如何在Linux/OS X上打印wstring?

如何€á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 ++中缺少什么(好吧,我只是一个菜鸟)?干杯!!


更新1:基于nm的建议

#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++ unicode wstring

5
推荐指数
1
解决办法
5194
查看次数

ustring - std::string/std::wstring 的就地替换?

C++ 和 UTF8 的延续- 为什么不直接替换 ASCII?

为什么没有std::ustring可能更换两个std::stringstd::wstring在新的应用?

当然在标准库中有相应的支持。类似于 howboost::filesystem3::path不关心字符串表示并同时使用std::stringstd::wstring

c++ string unicode

5
推荐指数
1
解决办法
5913
查看次数

将wchar_t*转换为UTF-16字符串

我需要一个C++代码来将给定的字符串转换wchar_t*为UTF-16字符串.它必须适用于Windows和Linux.我在搜索过程中浏览了很多网页,但这个主题对我来说仍然不清楚.

据我所知,我需要:

  1. setlocale使用LC_TYPE和UTF-16编码进行呼叫.
  2. 使用wcstombs转换wchar_t为UTF-16字符串.
  3. 调用setlocale以恢复以前的区域设置.

你知道我可以wchar_t*以便携方式(Windows和Linux)转换为UTF-16的方式吗?

c c++ unicode wchar-t utf-16

5
推荐指数
2
解决办法
7437
查看次数

C++中的Unicode到UTF-8

我搜索了很多,但找不到任何东西:

unsigned int unicodeChar = 0x5e9;
unsigned int utf8Char;
uni2utf8(unicodeChar, utf8Char);
assert(utf8Char == 0xd7a9);
Run Code Online (Sandbox Code Playgroud)

是否有一个库(最好是boost)实现类似于uni2utf8的东西?

c++ unicode boost utf-8

5
推荐指数
2
解决办法
1万
查看次数

可变参数函数参数的自动类型促销是什么?

请考虑以下代码段:

#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时,允许使用哪些类型,如何知道使用哪种类型以及避免此类运行时错误.

c runtime-error variadic-functions

4
推荐指数
2
解决办法
3948
查看次数

比较std :: wstring和std :: string

我如何可以比较wstring,比如L"Hello",一个string?如果我需要相同的类型,我怎样才能将它们转换为相同的类型?

c++

3
推荐指数
1
解决办法
5394
查看次数

模板函数的默认类型假设

示例:假设f是模板函数,有两个参数:

f (1, 2)在这个调用中,模板函数是否假设它的参数是int,或者是short什么?

编辑1:

模板函数声明:

template <typename dataTypeA, typename dataTypeB> dataTypeB functionX (dataTypeA argA, dataTypeB argB)

c++ templates

2
推荐指数
1
解决办法
406
查看次数

2
推荐指数
2
解决办法
9946
查看次数

有没有std :: to_u16string或std :: to_u32string?

我很高兴标准库能够获得一个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():错误的词法转换:源类型值无法解释为目标

c++ tostring c++11

0
推荐指数
1
解决办法
827
查看次数