无法使法语字符在C ++中工作

时间:2019-02-15 12:34:08

标签: c++ unicode

// francais projecct test1.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
int main()
{
    char  userAnswer[10];
    char answer[] = { "Vous êtes" };

    wcout << "s'il vous plaat ecrire conjugation pour Vous etre: ";

    cin>>userAnswer;

    if (strcmp(userAnswer, answer) == 0)

        cout << endl << "correct"<<endl<<endl;
    else
        cout << endl << "wrong answer"<<endl<<endl;

    system("pause");
    return 0;
}

带重音符号的字符不能被编译器识别,如果需要unicode,我也不知道如何获取unicode字符的输入。

1 个答案:

答案 0 :(得分:2)

std::getline是为std::basic_string定义的(特殊情况包括std::stringstd::wstring)。普通字符数组不属于该类别。

参考: http://www.cplusplus.com/reference/string/string/getline/

尽管我强烈建议您使用std::string / std::wstring,但是,如果要使代码正常工作,则必须使用cin.getline

您可以在此参考示例2: https://www.programiz.com/cpp-programming/library-function/iostream/wcin

第二,userAnswer == answer是错误的,因为它将比较两个指针,而不是它们的实际内容。

为此,您应该使用strcmp()

参考:http://www.cplusplus.com/reference/cstring/strcmp/

类似这样的东西:

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int main()
{
    char userAnswer[10];
    char answer[] = "Vous etes";

    wcout <<"s'il vous plait ecrire conjugation pour Vous etre: ";
    cin.getline(userAnswer, 10);

    if (!strcmp(userAnswer, answer))
    {
        wcout <<endl<< "correct";
    }
    else
    {
        wcout <<endl<< "wrong answer";
    }

    return 0;
}