在用c ++创建新类时,我很好奇。
在我的main.cpp中我有两个:
#include <iostream>
#incude <string>
但是,在我的另一个类FeedInfo.h的头文件中,我还需要包含什么才能在那里使用字符串?
例如,如果我想在我的.h中创建一个字符串:
std::string feed;
当我只使用#include <iostream>
或当我只使用#include <string>
时,或当我同时使用两者时,此代码将成功编译。
这让我感到困惑,因为在main.cpp中我必须同时使用它们 - 但在.h文件中我只需要其中一个 - 那么我要包括哪一个?
谢谢。
答案 0 :(得分:1)
在某些实现中,<iostream>
标头包含<string>
标头,因此您依赖免费搭车。应该避免这种情况,并且在使用std::string类型时,您应该明确包含<string>
标头。例如:
#include <iostream>
int main() {
std::string s = "Hello World!";
std::cout << s;
}
编译when using g++,使用Visual C ++时无法编译。所以你应该使用:
#include <iostream>
#include <string>
int main() {
std::string s = "Hello World!";
std::cout << s;
}
简而言之,如果您需要std::string
- 请在适当的位置添加<string>
标头,如果要将数据发送到标准输出,请使用<iostream>
。以下是使用标题和源文件时的细分:
<强> myclass.h:强>
#ifndef MY_CLASS_H
#define MY_CLASS_H
#include <string>
// your code
#endif
<强> myclass.cpp:强>
#include "myclass.h"
// include other headers as needed
<强> main.cpp中:强>
#include <iostream>
#include <string>
#include "myclass.h"
//your code
另请看一下这个标题为的问题: How do I include the string header?