3

我想读入一个名为:abc.txt 的文本文件

文本文件只包含一个简单的 a、b 和 c,每一个都在自己的行中。

当我使用 Microsoft 编译器编译它时,它编译完全没有问题,并且我得到了我期望的输出(见下文):

a
b
c
(blank line here)

这是我正在使用的 Borland 编译行:

bcc32 -w -ebor.exe main.cpp

这是我正在使用的 main.cpp 文件:

主文件

#include <iostream>
#include <fstream>
#include <string>
void printout(const std::string &file);

int main(void)
{
  printout("abc.txt");
  return 0;
}

void printout(const std::string &file)
{
  std::ifstream words;
  std::string   str;

  words.open(file);

  while(!words.eof())
  {
    std::getline(words, str);
    std::cout << str << "\n";
  }

  words.close();
}

我在 Borland 遇到的确切错误如下:

错误 E2285 main.cpp 17:在函数 printout(const std::string &) 中找不到“ifstream::open(const std::string)”的匹配项

我也收到了警告,但似乎发生这种情况的唯一原因是由于错误阻止了“文件”的使用:

警告 W8057 main.cpp 26:函数 printout(const std::string &) 中从未使用参数“file”

任何帮助将不胜感激,谢谢。

4

1 回答 1

4

在 C++11 之前,std::ifstream::open需要一个const char *. 用这个。

words.open( file.c_str() );
于 2013-04-08T21:58:20.867 回答