如何知道某些数据类型是否来自 std?
How to know if some data type is from std?
std 命名空间中是否有任何类型列表?我正在编写从 uml 图到 c++ 代码的翻译器,应该在需要时添加 std:: 。我的程序应该如何知道字符串有前缀 std:: 而 int 没有。
Is there any list of types inside std namespace?
所有这些都在标准以及涵盖该标准的任何文档中提及。但是,我知道没有简单的列表。
How my program should know that string has prefix std:: and int doesn't.
您的程序应该知道 int
不在命名空间中,因为它是关键字。您可以在标准的 [tab:lex.key] table 中找到所有关键字的列表。
但是,仅仅因为标识符是 string
,并不意味着它在 std
命名空间中。示例:
namespace not_std {
struct string {};
string s; // this isn't std::string
}
#include <string>
using std::string;
string s; // this is std::string
仅在后一种情况下添加 std::
限定符才是正确的。
I'm writing translator from uml diagram to c++ code
在我看来,您的翻译人员应该将 string
翻译成 string
,将 std::string
翻译成 std::string
。让图表的作者确保他们的名字是正确限定的。如果翻译器非要猜测,那么就会出现猜错的情况。
std 命名空间中是否有任何类型列表?我正在编写从 uml 图到 c++ 代码的翻译器,应该在需要时添加 std:: 。我的程序应该如何知道字符串有前缀 std:: 而 int 没有。
Is there any list of types inside std namespace?
所有这些都在标准以及涵盖该标准的任何文档中提及。但是,我知道没有简单的列表。
How my program should know that string has prefix std:: and int doesn't.
您的程序应该知道 int
不在命名空间中,因为它是关键字。您可以在标准的 [tab:lex.key] table 中找到所有关键字的列表。
但是,仅仅因为标识符是 string
,并不意味着它在 std
命名空间中。示例:
namespace not_std {
struct string {};
string s; // this isn't std::string
}
#include <string>
using std::string;
string s; // this is std::string
仅在后一种情况下添加 std::
限定符才是正确的。
I'm writing translator from uml diagram to c++ code
在我看来,您的翻译人员应该将 string
翻译成 string
,将 std::string
翻译成 std::string
。让图表的作者确保他们的名字是正确限定的。如果翻译器非要猜测,那么就会出现猜错的情况。