首页 > 解决方案 > 从 C++ 中的输入文件中读取另一行

问题描述

所以我试图从输入文件中读取数据并将该数据转换为带有条形图的输出文件。我可以打开并读取输入文件,但我陷入了循环,因为我不知道如何为输入文件中的另一组数据移动到下一行。

#include <iostream>
#include <iomanip>
#include <fstream>
#include <string>

using namespace std;

int main() {
   ifstream inFile;
   ofstream outFile;
   unsigned int storeNum;
   long long int salesData;
   string fileName;

   cout << "Please enter file name: ";
   cin >> fileName;

   inFile.open(fileName);
   if (inFile) {
      while (inFile >> storeNum >> salesData, '\n')
      {
         if (storeNum < 1 || storeNum > 99)
         {
            cout << "The store number " << storeNum << setw(2) << "is not valid" << endl;
         }
         if (salesData < 0)
         {
            cout << "The sales value for store " << storeNum << setw(2) << " is negative" << endl;
         }
         else {
         outFile.open("saleschart.txt");
         outFile << "SALES BAR CHART" << endl;
         outFile << "(Each X equals 1,000 dollars)" << endl;
         while (storeNum > 0)
         { 
            outFile << "Store " << storeNum << setw(2) << ": ";
            while (salesData > 1000)
            { 
               outFile << "X";
               salesData = salesData - 1000;
            }
            outFile << endl;
         }
         }


      }
      inFile.close();
   }

   else
   {
      cout << "File " << fileName << " could not be opened" << endl;
   }

   system("pause");
   return 0;
}

标签: c++inputoutput

解决方案


要逐行读取文件,请使用std::getline

std::string text_line;
while (std::getline(inFile, text_line))
{
//...
}

要从字符串中提取数字,请使用std::istringstream

std::istringstream text_stream(text_line);
text_stream >> storeNum >> salesData;

此外,在互联网上搜索“c++ 读取文件空间分隔”或“c++ 读取文件 CSV”。


推荐阅读