你好我在理解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;#"包含了所有需要包含的内容,但当我尝试访问变量时,它们仍然是空的。
答案 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');
答案 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 ++文件处理时非常有用。