Ifstream和Ofstream问题

时间:2014-09-24 09:45:46

标签: c++ iostream

你好我在理解Ifstream和Ofstream时遇到了一些麻烦。我正在尝试从名为" thefile.txt"的预制文件中导入文本。其中包含:

Google (GOOG)
522.01 2 100
520.66 1.5 80
Apple (AAPL)
389.27 2 150
401.82 1.8 150
Microsoft (MSFT)
25.06 2.5 100
25.07 2 80

这是代码块:

fin.open(inputfile);
fin >> stockname1 >> buyingcost1 >> commission1 >> shares1 >> sellingcost1 >> sellingcomish1 >> sharessold1
    >> stockname2 >> buyingcost2 >> commission2 >> shares2 >> sellingcost2 >> sellingcomish2 >> sharessold2
    >> stockname3 >> buyingcost3 >> commission3 >> shares3 >> sellingcost3 >> sellingcomish3 >> sharessold3;
fin.close();

一切都被正确宣布,我有#34;#"包含了所有需要包含的内容,但当我尝试访问变量时,它们仍然是空的。

3 个答案:

答案 0 :(得分:3)

对于字符串,operator >>逐字逐句读取。您必须stockname使用std::getline

(我假设输入文件已成功打开)

所以你这样做:

std::getline(fin, stockname1);
fin >> buyingcost1 >> commission1 >> shares1 >> sellingcost1 >> sellingcomish1 >> sharessold1;
// skip until EOL so next getline() reads the right thing
fin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');

Demo

答案 1 :(得分:0)

我认为你的程序无法打开文件。根据你的代码,我猜stockname1是一个字符串。如果文件成功打开,stockname1应该有一些东西。要检查问题,第一步是添加if(fin)条件并在分支中输出一些东西进行调试。安东萨文提到的错误也存在。

答案 2 :(得分:0)

我推测问题可能是&#34; fin.open(inputfile);&#34;
也许&#34; fin.open(inputfile,ios :: in);&#34;会工作吗? (如果您还需要输出,请使用&#34;,ios :: in | ios :: out&#34;,以下链接中的正确信息)


另一件可能是问题的事情是(例如)&#34; Google(GOOG)&#34;,因为据我所知&gt;&gt; input以与新行相同的方式解释空格。 正如其他人提到的那样,&#34; getline。()&#34;读取一整行(尽管我知道这是一个字符串)

我个人发现this在学习基本的c ++文件处理时非常有用。