Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ wcin正在将eof读取为C++;如果使用标准重定向来重定向输入_C++_Unicode - Fatal编程技术网

C++ wcin正在将eof读取为C++;如果使用标准重定向来重定向输入

C++ wcin正在将eof读取为C++;如果使用标准重定向来重定向输入,c++,unicode,C++,Unicode,我的控制台应用程序中有以下代码 std::cout << "\nEnter Id: "; std::cout.flush(); std::wcin >> inId; std::cout << "\nEnter Secret: "; std::cout.flush(); std::wcin >> inSecret; std::cout>inId; std::cout>昆虫; 如果我从控制台读取输入

我的控制台应用程序中有以下代码

    std::cout << "\nEnter Id: ";
    std::cout.flush();
    std::wcin >> inId;

    std::cout << "\nEnter Secret: ";
    std::cout.flush();
    std::wcin >> inSecret;
std::cout>inId;
std::cout>昆虫;
如果我从控制台读取输入,我得到的是正确的输入。但是,如果我从一个文本文件重定向输入,我得到的是空(EOF)值。
对于MBCS来说,它正如期工作。我不知道UNICODE中发生了什么。有人能帮我吗?提前感谢

您重定向文件的内容是什么?它的编码是什么?文件有以下sam xys27hdeo87编码是utf-8可能这里有一些东西给你一些想法:“编码是utf-8”-
std::wcin
无法读取utf-8中的输入。改为使用
std::cin
,或者使用单独的
std::istream
,它以二进制模式连接到平台的控制台API,然后根据需要读入并从UTF-8转换为UTF-16/32(取决于wchar的大小)。这意味着您必须首先检测STDIN是否被重定向,然后相应地从中读取。做重定向检测是特定于平台的,但是,标准C++中没有任何东西可以帮助它。