【问题标题】:[Error]expected identifier before numeric constant.-setlocale[错误]数字常量之前的预期标识符。-setlocale
【发布时间】:2017-01-01 02:10:38
【问题描述】:

我想使用setlocale(LC_ALL"..");,但我得到了这些编译器错误:

数字常量之前的预期标识符
数字常量前应为 ',' 或 '...'

#include<iostream>
#include<fstream>
#include<cctype>
#include<iomanip>
#include<locale.h>
using namespace std;
class account
{
setlocale(LC_ALL"Turkish");

【问题讨论】:

  • 您收到错误是因为您根本没有编写有效的代码。你必须从函数内部调用一个函数(比如 setlocale)——你不能直接把它放在这样的类声明中。
  • 除了你不能在那个上下文中调用函数之外,setlocale(LC_ALL"Turkish"); 是一个语法错误。你少了一个逗号。另外,您确定"Turkish" 是您系统上的有效区域名称吗?
  • 嗯,在 C 语言中用逗号分隔函数参数是很正常的,所以如果你使用 setlocale(LC_ALL, "Turkish");,你可能会得到更好的编译。

标签: c++


【解决方案1】:

作为@TheUndeadFish points out in the comments,问题是您正在尝试调用函数setlocale,但您不在函数中。在 C++ 中,您只能在另一个函数内部调用一个函数。因此,您可以这样称呼它:

int main()
{
    setlocale(LC_ALL, "Turkish");
}

你可以从一个类中调用一个函数,只要它是类的函数:

class account
{
public:
    account() { setlocale(LC_ALL, "Turkish"); }
};

int main()
{
    account a;
};

当一个account被构造时,它会调用setlocale(LC_ALL, "Turkish");

【讨论】:

    猜你喜欢
    • 2016-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-16
    相关资源
    最近更新 更多