如何扫描外来字符(如 ä、ß、ő、ű)并将它们打印到控制台窗口?
How can I scan foreign characters (like ä, ß, ő, ű) and print them out to the console window as well?
下面是我的简化代码。我想扫描用户输入的字符,然后在下一行打印出来。显然,非英语字符会出现一些问题。在程序中,我应该使用德语字母,如ä, ö, ü和ß,以及其他一些字母(
我已经尝试用很多方法来解决这个问题。我试图插入
行setlocale(LC_ALL, "German");
以便至少扫描和打印德语字符。它根本不起作用:似乎由于某种原因,getline无法接收输入的字符。
然后我用
代替getlinestd::wcin >> myString;
但这也没有多大作用。在输入äëßö后,我得到了这个:"÷á<.
有趣的是,没有setlocale, getline似乎工作得很好,并准确地返回我输入的字符。但是,std::wcout不能很好地显示以下内容:"Solution (with äëáéíöüőűß): "。然后,只要我在setlocale行中写入,getline就会发疯,但是"Solution (with äëáéíöüőűß):"现在可以正确打印了。
我应该如何修改代码来满足这些期望?我使用的是Windows平台,如果这可能很重要的话。
提前感谢!
#include "stdafx.h"
#include <iostream>
#include <string>
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std;
int iii = 1;
do
{
std::wcout << "Type in a string (with äëáéíöüőűß) : " << endl;
wstring myString;
getline(std::wcin, myString);
std::wcout << "Solution (with äëáéíöüőűß): " << myString << endl;
} while (iii < 50);
cin.get();
return 0;
}
在进行任何输入或输出之前,必须设置模式:
#include <iostream>
#include <string>
#include <io.h>
#include <fcntl.h>
int main()
{
::std::locale d_Locale2( "German" );
::std::locale::global( d_Locale2 );
_setmode( _fileno( stdin ), _O_U16TEXT );
_setmode( _fileno( stderr ), _O_U16TEXT );
_setmode( _fileno( stderr ), _O_U16TEXT );
::std::wcout << L"Type in a string (with äëáéíöüőűß) : " << ::std::endl;
::std::wstring myString;
::std::getline( ::std::wcin, myString );
::std::wcout << L"Solution (with äëáéíöüőűß): " << myString << ::std::endl;
return 0;
}
相关文章:
- Visual Studio 2017 停止工作,并在打开后显示许多控制台窗口
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- 如何获取控制台窗口的宽度?
- 是否可以从控制台应用程序使用 C++/WinRT 创建窗口?
- 在C++中隐藏键盘记录器的控制台窗口
- 如何在 Win32 控制台应用程序中注册不可见的窗口类?
- C++ 如何在 OpenGL 程序中远程调用控制台窗口
- 为什么调试时没有显示控制台窗口
- 有没有办法像动画一样移动控制台窗口?
- 如何在C++中居中输出控制台窗口
- 控制台窗口未在开发C++中打开?即使也有 getch() ?
- QTextEdit 提升为构建控制台窗口
- 如何拒绝一个叫做的过程以写入继承的控制台窗口
- Visual C 关闭文本文件和打开新的控制台窗口
- 有没有办法为使用 Boost 生成的进程创建新的控制台窗口
- C++:显示控制台窗口的输出
- C++:如何在控制台窗口中显示结果
- (C++)控制台窗口保持立即关闭,即使我在Visual Studio中是CTRL + F5
- 在 C 语言中将窗口控制台大小调整为全屏
- 将文本输出到窗口控制台.c++