(c ++)我需要在新类

时间:2018-01-06 19:30:44

标签: c++ string header

在用c ++创建新类时,我很好奇。

在我的main.cpp中我有两个:

#include <iostream> 
#incude <string>

但是,在我的另一个类FeedInfo.h的头文件中,我还需要包含什么才能在那里使用字符串?

例如,如果我想在我的.h中创建一个字符串:

std::string feed;

当我只使用#include <iostream>或当我只使用#include <string>时,或当我同时使用两者时,此代码将成功编译。

这让我感到困惑,因为在main.cpp中我必须同时使用它们 - 但在.h文件中我只需要其中一个 - 那么我要包括哪一个?

谢谢。

1 个答案:

答案 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?