C++ language
来自cppreference.com
< cpp
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
这是一份C++语言结构的简单参考。
目录 |
[编辑] 一般性主题
[编辑] 预处理器
[编辑] 注释
[编辑] 关键字
[编辑] ASCII表
[编辑] 转义序列
[编辑] C++历史
[编辑] 程序流控制
[编辑] 条件执行语句
条件语句根据给定的表达式的值执行不同的代码路径。
Original:
Conditional statements execute different code paths according to the value of given expression.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- if有条件地执行代码Original:ifexecutes code conditionallyThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - switch执行代码的整体参数的值Original:switch executes code according to the value of an integral argumentThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 迭代语句
迭代语句多次执行一个代码路径。
Original:
Iteration statements execute a code path multiple times.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- for 通过制定初始化,比较和增量执行循环。Original:for executes loops by specifying initialization, comparison, and incrementThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - range-for 在某个范围内执行循环(C++11 起)Original:range-for executes loops over a range(C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - while 执行循环,并在每次迭代之前检查是否符合条件Original:while executes loop, checking condition before each iterationThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - do-while 执行循环,并在每次迭代后检查是否符合条件Original:do-while executes loop, checking condition after each iterationThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 跳转语句
跳转语句使程序在不同的位置执行.
Original:
Jump statements continue program execution at a different location.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- continue跳过封闭的循环体的剩余部分Original:continue skips the remaining part of the enclosing loop bodyThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - break结束的封闭循环Original:break terminates the enclosing loopThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - goto在其他位置继续执行Original:goto continues execution in another locationThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - return终止执行的封闭功能Original:return terminates execution of the enclosing functionThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 函数
可以在程序中的不同的位置重复使用的相同代码。
Original:
The same code can be reused at different locations in the program.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 函数声明 声明函数Original:function declarations declare functionsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - lambda函数声明 声明lambda函数(C++11 起)Original:lambda function declarationsdeclare lambda functions(C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 函数模板 声明函数模板Original:function templatesdeclare function templatesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 内联限定符提示编译器将函数体直接插入到调用代码处Original:inline specifier hints that the compiler insert a function's body directly into the calling codeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 异常规范宣布,该函数将引发特定的异常(过时了)Original:exception specifications declare that a function throws only specific exceptions (过时了)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - noexcept说明声明或不是一个函数是否抛出任何异常(C++11 起)Original:noexcept specifier declares whether or not a function throws any exceptions (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 异常
例外的是一个更强大的方式来发出错误信息。函数的返回代码或全局错误变量的条件比.
Original:
Exceptions are a more robust way to signal error condition than function return codes or global error variables.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- throw表达式信号错误和错误处理程序将控制权转移Original:throw expressions signal errors and transfer control to error handlersThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - try-catch块从特定的代码块捕获异常Original:try-catch blocks catch exceptions originating from specific blocks of codeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - noexcept说明和 noexcept操作定义和测试,如果表达式抛出异常(过时了)Original:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 命名空间
命名空间提供了一种在大型项目以避免名称冲突的方法。
Original:
Namespaces provide a way to prevent name clashes in large projects.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 命名空间声明 声明命名空间Original:namespace declarationsdeclare namespacesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 命名空间别名 为已经存在的命名空间声明作为替代的名称Original:namespace aliases declare alternate names for existing namespacesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 类型
- 基本类型 定义基本的字符型,整型和浮点类型Original:fundamental types define basic character, integer and floating point typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 指针类型 定义一个存储内存位置的类型Original:pointer types define types holding a memory locationThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - compound types 定义有几个数据成员(本质上是相同的“类”)的类型Original:compound types define types that hold several data members (essentially the same as class)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 枚举类型定义类型能够保持只有一个指定的值Original:enumeration types define types that are able to hold only one of the specified valuesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 联合类型定义,可容纳数表示的数据的类型Original:union types define types that can hold data in several representationsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 函数类型定义函数调用签名,那是类型的参数和返回类型Original:function types define function call signatures, that is the types of arguments and the return typeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - decltype说明相当于一个表达式(C++11 起)类型定义了一个类型Original:decltype specifier defines a type equivalent to the type of an expression (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 限定符
- cv限定符指定类型的常量性和波动性Original:cv specifiers specify constness and volatility of typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 存储时间说明符指定类型的存储时间Original:storage duration specifiers specify storage duration of typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - constexpr说明指定的变量或函数的值可以在编译时(C++11 起)计算Original:constexpr specifier specifies that the value of a variable or function can be computed at compile time (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 自动符指定的表达,分配给变量(C++11 起)的实际类型应定义Original:auto specifier specifies that the actual type shall be defined from the expression, assigned to the variable (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - alignas说明指定的变量的存储空间应保持一致的具体数额(C++11 起)Original:alignas specifier specifies that the storage for the variable should be aligned by specific amount (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 初始化
每当命名的变量的声明,每当创建一个临时对象,新对象的初始值是通过以下机制之一
Original:
Whenever a named variable is declared, and whenever a temporary object is created, the initial value of the new object is provided through one of the following mechanisms:
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 默认的初始化发生时没有初始化Original:default initialization occurs when no initializer is providedThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 值初始化发生时的初始值是一个空的括号Original:value initialization occurs when the initializer is an empty set of parenthesesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 零初始化 初始化的对象的每一个位到零Original:zero initialization initializes every bit of the object to zeroThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 复制初始化 初始化一个对象从另一个对象Original:copy initialization initializes an object from another objectThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 直接初始化 提供初始值或构造函数的参数列表中,在括号中Original:direct initialization provides the initial value or the list of constructor arguments, in parenthesesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 集合初始化 没有构造一个数组或结构的每一个成员提供初始值Original:aggregate initialization provides initial values to every member of an array or a struct without a constructorThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 表初始化 提供了一个任意长度的值列表,它可以初始化一个std::vector或std::map(C++11 起)Original:list initialization provides an arbitrary long list of values, which can initialize a std::vector or std::map (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 常数初始化 恒定的静态对象初始化之前任何东西Original:constant initialization initializes all constant static objects before anything elseThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 参考电压的初始化 绑定对象的引用,延长寿命临时Original:reference initialization binds references to objects and extend the lifetimes of the temporariesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 常值
文字是一个C++程序,代表恒定值,在源代码中嵌入的标记.
Original:
Literals are the tokens of a C++ program that represent constant values, embedded in the source code.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 整数文字是十进制,八进制或十六进制数字的整数类型.Original:integer literals are decimal, octal, or hexadecimal numbers of integer type.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 字符文字是单个字符类型char,char16_t,char32_t,或wchar_tOriginal:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 浮点文字类型float,double,或long double的值Original:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 字符串文字的字符序列,这可能是狭隘的,多字节或宽Original:string literals are sequences of characters, which may be narrow, multibyte, or wideThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 布尔文字是值类型bool,这是true和falseOriginal:The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - nullptr文字的指针,它指定一个空指针(C++11 起)Original:nullptr is the pointer literal which specifies a null pointer value (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 用户自定义的文字用户指定的类型是恒定值(C++11 起)Original:user-defined literals are constant values of user-specified type (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 表达式
符和操作数指定的计算表达式可以是一个序列。表达可能会导致一个值,并可能引起副作用.
Original:
An expression is a sequence of operators and operands that specifies a computation. An expression can result in a value and can cause side effects.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 价值类型(左值,右值,glvalue,prvalue,xvalue)分类表达它们的值Original:value categories (lvalue, rvalue, glvalue, prvalue, xvalue) classify expressions by their valuesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 为了评价的参数和子表达式指定的顺序在中间结果Original:order of evaluation of arguments and subexpressions specify the order in which intermediate results are obtainedThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - operators允许使用的语法中常见的数学Original:operators allow the use of syntax commonly found in mathematicsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
| Common operators | ||||||
|---|---|---|---|---|---|---|
| 分配 | incrementNJdecrement | 算术 | 合乎逻辑的 | 比较 | memberNJaccess | 其他 |
|
a = b |
++a |
+a |
!a |
a == b |
a[b] |
a(...) |
| Special operators | ||||||
|
static_cast将一种类型转换到另一个兼容的类型
Original: static_cast converts one type to another compatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. dynamic_cast将虚基类到派生class
Original: dynamic_cast converts virtual base class to derived class The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. const_cast转换类型兼容型,与不同的cvqualifiers
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. reinterpret_cast转换类型不兼容的type
Original: reinterpret_cast converts type to incompatible type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. new个分配memory
Original: new allocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. delete会释放memory
Original: delete deallocates memory The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof查询的大小的type
Original: sizeof queries the size of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. sizeof...查询的大小的参数组(C++11 起)
Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. typeid查询的类型一个type
信息 Original: typeid queries the type information of a type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. noexcept进行检查,,如果的表达可以抛出一个异常(C++11 起)
, Original: The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. alignof查询类型(C++11 起)对齐要求
Original: alignof queries alignment requirements of a type (C++11 起) The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | ||||||
- 运算符的优先级 定义运营商绑定的顺序,他们的论点Original:operator precedence defines the order in which operators are bound to their argumentsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - {{tr| 另一种表示形式其他一些运营商的拼写 |<div class="t-tr-text"> alternative representations</div> are alternative spellings for some operatorsOriginal:{{{2}}}The text has been machine-translated via [http://translate.google.com Google Translate].
You can help to correct and verify the translation. Click [http://en.cppreference.com/w/Cppreference:MachineTranslations here] for instructions.
[编辑] 实用工具
类型
Original:
Types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- typedef声明创建同义词的类型Original:typedef declarations create synonyms for typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 键入别名报关单创建同义词的类型Original:type alias declarations create synonyms for typesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 属性定义变量(C++11 起)其他信息Original:attributes define additional information about variables (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
强制转换
Original:
Casts
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 标准的转换的隐式转换为另一种类型Original:standard conversions implicit conversions from one type to anotherThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. -
const_cast转换 -
static_cast转换 -
dynamic_cast转换 -
reinterpret_cast转换 - 显式转换转换使用C风格的转换符号和功能符号Original:explicit cast conversion using C-style cast notation and functional notationThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
内存分配
Original:
Memory allocation
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 新的表达动态分配内存Original:new expression allocates memory dynamicallyThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 删除的表情动态地释放内存Original:delete expression deallocates memory dynamicallyThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 类
类提供了面向对象编程的概念在C + +
Original:
Classes provide the concept of object-oriented programming in C++.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 类的声明声明类Original:class declarations declare classesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. -
this指针的当前实例中的类成员方法Original:thispointer links to the current instance of a class in member methodsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 访问符确定类成员的可见性Original:access specifiers determine visibility of class membersThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 朋友说明授予访问权限的私有/受保护的部分非会员的类或函数Original:friend specifier grants access privileges to private/protected parts for non-member classes or functionsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 初始化列表初始化类成员的数据Original:initializer lists initialize class member dataThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 类特定的功能特性
- 虚函数的说明声明一个函数是虚拟的Original:virtual function specifier declares that a function is virtualThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 覆盖说明声明一个虚函数重写另一个虚拟function.(C++11 起)Original:override specifier declares that a virtual function overrides another virtual function.(C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 最后说明声明一个虚函数不能被覆盖一个继承class.(C++11 起)中Original:final specifier declares that a virtual function can not be overridden in a inheriting class.(C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 明确的功能说明声明构造函数或转换运算符不能用于隐式转换(C++11 起)Original:explicit function specifier declares that a constructor or conversion operator can not be used in implicit conversions (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 静态函数说明声明一个函数不使用类的数据Original:static function specifier declares that a function does not use class dataThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - CV功能说明声明一个成员函数只能用于品种限定对象Original:cv function specifier declares that a member function can only be used on cv qualified objectsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 特殊的成员函数
- 默认构造函数 初始化的对象默认内容Original:default constructor initializes the object with default contentsThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - copy constructor初始化的对象与另一个对象的内容Original:copy constructor initializes the object with the contents of another objectThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 移动的构造函数初始化其他临时对象的内容的对象,最大限度地减少复制开销(C++11 起)Original:move constructor initializes the object with the contents of other, temporary object, minimizing copying overhead (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 赋值运算符替换的对象与另一个对象的内容的内容Original:assignment operator replaces the contents of the object with the contents of another objectThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 移动赋值运算符替换其他临时对象的内容的对象的内容,最大限度地减少复制开销(C++11 起)Original:move assignment operator replaces the contents of the object with the contents of other, temporary object, minimizing copying overhead (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 析构函数版本声称资源Original:destructor releases claimed resourcesThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 模板
允许函数和类,泛型类型的操作
Original:
Allows functions and classes to operate on generic types
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
- 类模板声明声明一个类模板Original:class template declaration declares a class templateThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 函数模板的声明声明一个函数模板Original:function template declaration declares a function templateThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 模板特化定义了一个现有的用于特定类型的模板Original:template specialization defines an existing template for a specific typeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 参数包允许模板类型列表中的使用(C++11 起)Original:parameter packs allows the use of lists of types in templates (C++11 起)The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 优化
- 因为如果规则 可以不改变任何代码转换的输出Original:The as-if rule allows any code transformation that doesn't change the outputThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 复制省略 ,包括RVO和NRVO,使传递的值在许多情况下,首选的方法.Original:Copy elision, including RVO and NRVO, makes pass-by-value the preferred approach in many situations.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions. - 空基类优化 多重继承,接口或策略类的开销,并须为标准布局类型.Original:Empty base optimization makes multiple inheritance from interfaces or policy classes overhead-free and is required for standard-layout types.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
[编辑] 杂项
- 内联汇编允许使用的汇编代码,,沿着C + +代码Original:Inline assembly allows the use of assembly code alongside C++ codeThe text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.

