我有一個名爲「items.dat」的文件,它包含訂單itemID,itemPrice和itemName中的以下內容。C++:如何在使用getstream()和ifstream對象從文件中讀取一行時跳過第一個空格?
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
我想跳過開頭的空白。我怎樣才能做到這一點?
爲什麼不在閱讀後修剪字符串而不是跳過空格? –
但我們必須自己寫一個修剪功能,對吧? –
是的,但它很容易,遍佈網絡的例子很多(包括這裏的很多例子)。 –