我想讀取一個文件,其中第一行是一個整數,並且下一行是一個字符串(我必須將其讀入char數組)。 我在輸入流對象上使用了>>運算符來讀取整數,然後我使用.get()方法和.ignore()方法將下一行讀入char數組,但是當我嘗試讀入字符數組我得到一個空字符串 我不知道爲什麼我得到一個空白字符串,你知道爲什麼這可能是?從C++中讀取文件的麻煩
這裏是我使用從文件中讀取的代碼:
BookList::BookList()
{
//Read in inventory.txt and initialize the booklist
ifstream invStream("inventory.txt", ifstream::in);
int lineIdx = 0;
int bookIdx = 0;
bool firstLineNotRead = true;
while (invStream.good()) {
if (firstLineNotRead) {
invStream >> listSize;
firstLineNotRead = false;
bookList = new Book *[listSize];
for (int i = 0; i < listSize; i++) {
bookList[i] = new Book();
}
} else {
if (lineIdx % 3 == 0) {
char tempTitle[200];
invStream.get(tempTitle, 200, '\n');
invStream.ignore(200, '\n');
bookList[bookIdx] = new Book();
bookList[bookIdx]->setTitle(tempTitle);
} else if (lineIdx % 3 == 1) {
int bookCnt;
invStream >> bookCnt;
bookList[bookIdx]->changeCount(bookCnt);
} else if (lineIdx % 3 == 2) {
float price;
invStream >> price;
bookList[bookIdx]->setPrice(price);
bookIdx++;
}
lineIdx++;
}
}
}
所以LISTSIZE是從該文件的第一行讀取的第一整數,tempTitle是用於讀取的臨時緩衝器在文件第二行的字符串中。但是當我做invStream.get()和invStream.ignore()時,我看到tempTitle字符串是空的。爲什麼?
想想第一個'\ N'按照您在第一行的整數。 –
提供樣本文件? – everettjf
爲什麼不使用'getline()'? –