需要帮助从文件中读取。 C ++

时间:2013-09-28 03:20:57

标签: c++

大家好,我试图用c ++中的文件读取。我是c ++的新手,但是从文件测试程序中练习一个简单的读取。我的程序编译但是当我从文件中读取时,它会在屏幕上显示一堆垃圾。以下是我的代码:

#include <iostream>
#include <fstream>

int main()
{
    ifstream infile;
    char File[20];
    cout<<"Please enter file name: "<<endl;
    cin>>File;
   string sym;
  double o_price, h_price, l_pprice, c_pprice, c_price;
  int o_shares;

    infile.open(File);

    if(!infile.is_open())
    {
        cout<<"The file cannot be open"<<endl;
    }

    while(!infile.eof())
    {
        infile>>sym>>o_price>>c_price>>h_price>>l_pprice>>c_pprice>>o_shares;
        cout<<sym<<o_price<<c_price<<h_price<<l_pprice<<c_pprice<<o_shares;
    }
    infile.close();
    return 0;
 }

我正在努力理解这个概念,但我需要帮助。 抱歉缺少语法。 输入文件包含: ABC 120.09 123.11 134.45 124.34 36.67 10000

以下是屏幕上显示的输出: P!?=·R {[CONTENT_TYPES] .xml000000e。

3 个答案:

答案 0 :(得分:1)

您需要在使用之前定义或声明变量。 但是,在您的计划中,sym, o_price, h_price, l_pprice, c_pprice, o_shares未定义或未声明。 Cpp是一种静态语言,你需要遵守规则。

答案 1 :(得分:0)

#include <iostream>
#include <fstream>

using namespace std;

int main()
{
    ifstream infile;
    char File[20];
    cout<<"Please enter file name: "<<endl;
    cin>>File;
    infile.open(File);

    if(!infile.is_open())
    {
        cout<<"The file cannot be open"<<endl;
    }

    string sym;
    double o_price, h_price, l_pprice, c_pprice;
    int o_shares;
    infile>>sym>>o_price>>h_price>>l_pprice>>c_pprice>>o_shares;
    cout<<sym<<" "<<o_price<<" "<<h_price<<" "
        <<l_pprice<<" "<< c_pprice<<" "<<o_shares<< endl;

    infile.close();
    return 0;
}

答案 2 :(得分:0)

尝试更改此内容:

if(!infile.is_open())
{
    cout<<"The file cannot be open"<<endl;
}

到此:

if(!infile.is_open())
{
    cout<<"The file cannot be open"<<endl;
    return 0;
}

正如您现在所做的那样,检查文件是否已成功打开,但如果文件未成功打开,则只需继续使用您的程序即可。如果文件没有正确打开,你不想这样做,因为它将继续读取(失败)并永远打印垃圾值。

另外,这个:

while(!infile.eof())

不是正确的方法,因为你只有在尝试阅读文件末尾之后才能获得EOF ,所以它总是会尝试阅读(并且,在你的情况下,打印)比你想要的多一倍。