c++ - 从 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;
}
解决方案
要逐行读取文件,请使用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”。
推荐阅读
- unity3d - Unity UI 子级
- reactjs - 原生基本标签栏样式
- android - 如果我们打开应用程序并在打开应用程序时收到任何通知之前直接关闭它,FirebaseMessagingService 将不起作用
- apache - 是否可以在计算机上托管网站但使用来自谷歌云虚拟机上的 vpn 服务器的静态 IP?
- reactjs - Reactjs:Antd Table onRowClick 触发所有事件
- macos - 加载文件失败
- flutter - 无法解析配置“:google_sign_in:debugCompileClasspath”的所有任务依赖项
- arrays - Mongodb:对多个嵌套数组进行排序
- vue.js - HandsOnTable (Vue Wrapper) - 将行与数据库 ID 关联?
- python - SQLAlchemy AttributeError:“int”对象没有属性“_set_parent_dispatch”