Ubuntu - 没有这样的文件或目录#include <string>

时间:2015-05-13 15:51:11

标签: c++ database ubuntu

我正在尝试编写这样的代码:(未完成)

 #include"header.h"
 #include<stdlib>
 #include<stdio.h>
 #include<libpq-fe.h>
 #include<string>

 int main(){
  std::string pguser = "XYZ";
  std::string pgpassword = "XYZ";
  std::string pghost="XYZ";
  std::string pgdbname = "XYZ";
  int i;
  PGconn *conn;
  PGresult *res;

  connstr = "user=";
  connstr += pguser;
  connstr +="password=";
  connstr += pgpassword;
  connstr +="host=";
  connstr += pghost;
  connstr +="dbname=";
  connstr += pgdbname;   

  //DB-Login
  conn = db_login(const string &user, const string &password, const string        &host, const string &dbname);
  if(conn == true){
  printf("LOGIN SUCCESFULLY");
  }else{
     printf("LOGIN FAILED");
  }

  return 0;

  }

我的Header.h

 #ifndef DB_H
 #define DB_H

 #include <string>

 using namespace std;

 int db_login(const string &user, const string &password, const string  &host, const string &dbname);
 #endif

我只想测试它(sudo gcc main.c header.h -o test) 我得到的结果是:没有这样的文件或目录#include string

我搜索了一个解决方案并尝试了但是我得到了同样的错误。 (还安装了 - &gt; sudo apt-get install build-essential )

请帮助

3 个答案:

答案 0 :(得分:3)

您正在编写C ++代码,但尝试将其编译为C - import subprocess import threading import random # We may need to guard this? child = subprocess.Popen('cat', stdout=subprocess.PIPE, stdin=subprocess.PIPE) # Continuously print what the process outputs... def print_child(): for line in child.stdout: print(line) child_reader = threading.Thread(target = print_child) child_reader.start() for i in range(10000): chars = 'ABC\n' child.stdin.write(random.choice(chars).encode()) # Send EOF. # This kills the cat. child.stdin.close() # I don't think order matters here? child.wait() child_reader.join() 是C语言前端,因此请改用gcc。同时将源文件从g++重命名为.c,以获得.cpp的自动支持。

答案 1 :(得分:2)

#include<string>是C ++标题。您在.c文件中使用C ++代码,这是不正确的。您可能应该将main.c重命名为main.cpp并使用g ++而不是gcc

答案 2 :(得分:0)

对于遇到此问题并使用make而不是显式调用gcc的用户:

make VERBOSE=1

将指示其gcc还是g ++