错误:“。”之前的预期构造函数、析构函数或类型转换令牌 - 了解 fstream

Posted

技术标签:

【中文标题】错误:“。”之前的预期构造函数、析构函数或类型转换令牌 - 了解 fstream【英文标题】:Error: Expected constructor, destructor, or type conversion before '.' token - Understand fstream 【发布时间】:2013-04-02 01:11:14 【问题描述】:

我有一个简单的问题。我只是在学习如何使用fstream 在数据文件之间进行打印,而我只是在编译时遇到了问题。我在这段代码的第 11 行和第 20 行遇到了同样的错误。另外,我不太确定我是否在代码末尾正确地从文件中打印。

我得到的错误是:

'错误:'.'之前的预期构造函数、析构函数或类型转换令牌'

对于第 11 行和第 20 行,这是相同的错误,但使用字符 << 而不是 .。我也收到此错误:

“错误:'if' 之前的预期 unqualified-id”

出于某种原因,尽管我很确定我的语法在这些方面是正确的。这些错误是否有某种关联?这是我的 main.cpp 文件:

#include <iostream>
#include <string>

#include <fstream>

using namespace std;

ofstream outFile;
string filename = "test.txt";

outFile.open(filename.c_str() );

if (!outFile) 
  cerr << "File "
       << filename
       << " failed to open for output."
       << endl;


outFile << "Hello world!"
        << 2013
        << 3.14
        << "The end."
        << endl;

outFile.close();

ifstream inFile;

inFile.open("test.txt");

if (!inFile) 
  cerr << "File "
       << filename
       << " failed to open for input."
       << endl;


int i=0;

while (inFile >> i) 

  cout<< i
  << endl;
  i++;
  cout<< "Year is: "
      << i
      << endl;
  i++;
  cout<< "PI is about: "
      << i
      <<endl;
  i++;
  cout<< i
  <<endl;  

【问题讨论】:

从小一点开始,就像一个 hello world 程序,你会看到你缺少什么。 这似乎根本没有任何方法.. ? 【参考方案1】:

据我所知,您缺少main 或某种function,否则这不是一个合适的程序,例如:

int main()

    ofstream outFile;
    string filename = "test.txt";

    /// rest of your code
 

写出文件的代码看起来工作正常,下一个问题是当你在这里读回文件时:

while (inFile >> i) 

你有混合数据,首先不是全部int,这样开始可能会更好:

std::string str ;

while (std::getline(inFile, str))

        std::cout << str << std::endl ;

【讨论】:

以上是关于错误:“。”之前的预期构造函数、析构函数或类型转换令牌 - 了解 fstream的主要内容,如果未能解决你的问题,请参考以下文章

错误:“;”之前的预期构造函数、析构函数或类型转换令牌

错误:“(”标记之前的预期构造函数、析构函数或类型转换?

错误:“。”之前的预期构造函数、析构函数或类型转换令牌 - 了解 fstream

错误:预期的构造函数、析构函数、“<”标记之前的类型转换

OpenCV 预期的构造函数、析构函数或类型转换

Xcode: 错误:对于函数式的转换或类型构造,预期'('。