我有一个名为" items.dat"的文件。以及itemID,itemPrice和itemName中的以下内容。
item0001 500.00 item1 name1 with spaces
item0002 500.00 item2 name2 with spaces
item0003 500.00 item3 name3 with spaces
我编写了以下代码来读取数据并将其存储在结构中。
#include <fstream>
#include <iostream>
#include <string>
#include <cstdlib>
#include <iomanip>
using namespace std;
struct item {
string name;
string code;
double price;
};
item items[10];
void initializeItem(item tmpItem[], string dataFile);
int main() {
initializeItem(items, "items.dat");
cout << items[0].name << endl;
cout << items[0].name.at(1) << endl;
return 0;
}
void initializeItem(item tmpItem[], string dataFile) {
ifstream fileRead(dataFile);
if (!fileRead) {
cout << "ERROR: Could not read file " << dataFile << endl;
}
else {
int i = 0;
while (fileRead >> tmpItem[i].code) {
fileRead >> tmpItem[i].price;
getline(fileRead, tmpItem[i].name);
i++;
}
}
}
我注意到getline()在读取项目名称和内容时读取开头的空白区域。
输出
name1 with spaces
n
我想在开头跳过空白。我怎么能这样做?
答案 0 :(得分:4)
std::ws
IO操纵器可用于丢弃前导空格。
使用它的一种紧凑方式是:
getline(fileRead >> std::ws, tmpItem[i].name);
这会在ifstream
传递给getline
之前丢弃import ast
l = ast.literal_eval(list_from_file)
中的任何空格。