【问题标题】:How to output a euro sign in C++如何在 C++ 中输出欧元符号
【发布时间】:2016-11-15 14:28:28
【问题描述】:

我试图为一个计算出租车费用并提供将其转换为美元或欧元的程序输出一个欧元符号。 规范的一部分是我必须输出一个欧元符号。我已经尝试过 Unicode,但我没有任何运气。任何帮助将不胜感激,谢谢。

这是我的代码:

void produceFareInOtherCurrency(){
//Constant variable for eurosign
const char EUROSIGN = 128;

//Selects currency
switch (currency)
{
//Euros
case 'E':
price = price * 1.1;
cout << "Cost in euros is: " << price << EUROSIGN << ".\n\n";
break;

//Dollars
case '$':
price = price * 1.22;
cout << "Cost in US Dollars is: $"<< price << ".\n\n";
break;

//Exit
case '#':
break;

//Error message
default:
cout << "ERROR: Currency unknown!\n\n";
}

}

【问题讨论】:

  • 你有欧式键盘吗?然后很可能在它的某个地方有一个欧元标志。通常与E 键一起,尝试按下Alt-GrE 看看你会得到什么。如果您没有欧元密钥,那么the Unicode Euro symbol 在任何编码中都不会编码为128
  • 您使用的是什么操作系统?您需要确保控制台支持 unicode 字符
  • 我使用的是 Windows 10,我有一个英式键盘。

标签: c++


【解决方案1】:

Windows 对在控制台中打印 Unicode 的支持有限。在 Visual Studio 中,您可以使用 _setmode 打印 Unicode 符号:

#include <iostream>
#include <string>
#include <io.h>
#include <fcntl.h>

int main()
{
    _setmode(_fileno(stdout), _O_U16TEXT);
    std::wcout << L"€\n";
    return 0;
}

请注意,如果您打算再次使用std::cout,则必须致电_setmode(_fileno(stdout), _O_TEXT)

如果使用 MinGW,请改用以下内容:

#include "windows.h"

void myprint(const wchar_t* str)
{
    WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), str, wcslen(str), NULL, NULL);
}

int main()
{
    myprint(L"€\n");
    return 0;
}

在 Linux 中你可以简单地尝试一下

std::cout << "€\n";

【讨论】:

    【解决方案2】:

    尝试对欧元符号使用 unicode 字符文字:\u20AC

    cout << "Cost in euros is: " << price << "\u20AC.\n";
    

    按照 cmets 中的说明进行编辑

    【讨论】:

    • 我一直遇到同样的问题,它会输出一个带有重音符号的 C。
    【解决方案3】:

    你可以用这个

    #include <windows.h>
    SetConsoleOutputCP(1252);
    cout << (char)(128);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-03-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多