【发布时间】:2022-12-12 16:32:08
【问题描述】:
为什么 #include "string.h" 变灰并且即使变灰它仍然包含它。这是我项目中唯一的 CPP 源文件,所以我知道我不会将它包含在另一个文件中。我的助教说它可能使用 CPP 版本的字符串,但在课程的后面它会成为一个问题,因为我们需要使用字符串的“string.h”版本,所以我想确保它仍然包括“字符串” .h”,即使它是灰色的。
【问题讨论】:
-
不知道 CLion 但是
#include "string.h"是错误的,如果你真的想使用std::string类(你正在做的)。#include <string>是正确的。也许 IDE 注意到您实际上并没有使用"string.h"中的任何内容,因此警告通过把它变成灰色?尝试将其更改为<string>。我认为这会解决它。 -
<string.h> 这不是 C++ 代码。和往常一样,Ted 对 Clion 的行为是正确的。它是灰色的,因为你实际上并没有使用它。我很确定 iostream include 会引入 <string>
-
@CaptainGiraffe 干杯!确保获得
std::string定义的唯一方法是实际上是#include <string>。它是确保您具有该定义的唯一标头。<string.h>标头在 C++ 中称为<cstring>,但它仅将 C 字符串函数引入std::(并可能在它们周围添加一些 C++ 特定细节)。它没有定义std::string。凌乱?是的 :-)