<string>标头有效,但<cstring> </cstring> </string>

时间:2014-08-16 21:23:47

标签: c++ string cstring

我有三个短文件,我从我的项目改编而来,因为它们重现了我所遇到的错误:

exp.cpp

#include <iostream>
using namespace std;

int main(){
    cout << "Hello world!" << endl;
}

parser.cpp

#include <cstring>
#include "parser.h"

parser.h

#ifndef PARSER_H_
#define PARSER_H_

#include <cstring>

class Parser{
public:
    Parser(std::string*);
    std::string* unprocessedInput;
};

#endif /* PARSER_H_ */

当我在线上构建项目时,

Parser(std::string*)

我在'*'令牌&#34;之前收到错误消息&#34;期望')'在线,

std::string* unprocessedInput;,

我收到错误&#34;命名空间'std'中的'string'没有命名类型&#34;。

当我使用&lt; string&gt;时而不是&lt; cstring&gt;在parser.cpp或parser.h中,项目构建。我想了解为什么&lt; cstring&gt;不管用。我需要在项目中使用以null结尾的字符串。

请注意,我已经广泛搜索了这个。在我的研究中,我得到了在头文件中使用std :: string而不是字符串的想法。

1 个答案:

答案 0 :(得分:4)

标头<cstring>包含C标头<string.h>的标准C声明 C ++标头<string>包含C ++标准类std::string(std :: basic_string)的声明

因此<cstring><string>是不同的标头,包含不同的声明。

根据C ++标准(相对于标题<cstring>

  

7内容与标准C库标题相同   <string.h>,更改为21.8中指定的memchr()。