C++ 如何知道要在数组中存储多少索引

C++ 如何知道要在数组中存储多少索引,c++,C++,我想编写一个搜索函数,在这里可以从文件中提取字符串。函数请求用户输入要搜索的字符串的第一个字母,for循环将搜索第一个字母与用户请求的相同的字符串。这是我的密码 string bid, bname, bAuthor, bcat, bPub; int bAmt = 0, i = 1; bool bname2length; char character[]; char firstChar; ifstream inBook; inBook.open("books.txt"); if(inBook.i

我想编写一个搜索函数,在这里可以从文件中提取字符串。函数请求用户输入要搜索的字符串的第一个字母,for循环将搜索第一个字母与用户请求的相同的字符串。这是我的密码

string bid, bname, bAuthor, bcat, bPub;
int bAmt = 0, i = 1;
bool bname2length;
char character[];
char firstChar;
ifstream inBook;
inBook.open("books.txt");

if(inBook.is_open())
{
    cout << setfill('-') << setw(1) << "+" << setw(3) << "-" << setw(1) << "+" << setw(8) << "-" << setw(1) << "+" << setw(40) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(20) << "-" << setw(1) << "+" << setw(20) << "-" << setw(1) << "+" << setw(6) << "-" << setw(1) << "+" << endl;
    cout << setfill(' ') << setw(1) << "|" << setw(3) << left << "No." << setw(1) << "|" << setw(8) << left << "BookID" << setw(1) << "|" << setw(40) << left << "Book Name" << setw(1) << "|" << setw(15) << left << "Author" << setw(1) << "|" << setw(20) << left << "Category" << setw(1) << "|" << setw(20) << left << "Publisher" << setw(1) << "|" << setw(6) << left << "Amount" << setw(1) << "|" << endl;
    cout << setfill('-') << setw(1) << "+" << setw(3) << "-" << setw(1) << "+" << setw(8) << "-" << setw(1) << "+" << setw(40) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(20) << "-" << setw(1) << "+" << setw(20) << "-" << setw(1) << "+" <<  setw(6) << "-" << setw(1) << "+" << endl;

    getline(inBook, bid, '#');
    getline(inBook, bname, '#');
    getline(inBook, bAuthor, '#');
    getline(inBook, bAuthor, '#');
    getline(inBook, bPub, '#');
    inBook >> bAmt;
    inBook.ignore(1);

    while(!inBook.eof())
    {
        cout << setfill(' ') << setw(1) << "|" << setw(3) << left << i << setw(1) << "|" << setw(8) << left << bid << setw(1) << "|" << setw(40) << left << bname << setw(1) << "|" << setw(15) << left << bAuthor << setw(1) << "|" << setw(20) << left << bcat << setw(1) << "|" << setw(20) << left << bPub << setw(1) << "|" << setw(6) << left << bAmt << setw(1) << "|" << endl;
        cout << setfill('-') << setw(1) << "+" << setw(3) << "-" << setw(1) << "+" << setw(8) << "-" << setw(1) << "+" << setw(40) << "-" << setw(1) << "+" << setw(15) << "-" << setw(1) << "+" << setw(20) << "-" << setw(1) << "+" << setw(20) << "-" << setw(1) << "+" << setw(6) << "-" << setw(1) << "+" << endl;

        getline(inBook, bid, '#');
        getline(inBook, bname, '#');
        getline(inBook, bAuthor, '#');
        getline(inBook, bcat, '#');
        getline(inBook, bPub, '#');
        inBook >> bAmt;
        inBook.ignore(1);
        i++;

        cout << "Enter the First Character of Search Obj : ";
        cin >> firstChar;

        while(bid != ' ')
        {
            character[i] = bid;
            i++;
        }

        cout << "Books with First Character of " + firstChar << endl;
        for(int i=0; i<sizeof(character[]); i++)
        {
            if(character[i].chatAt(0) == firstChar)
            {
                cout << character[i] << endl;
            }
        }
    }

    inBook.close();
}

else
{
    cout << "Invalid file!";
}
string bid、bname、bAuthor、bcat、bPub;
int-bAmt=0,i=1;
布尔b长度;
字符[];
char firstChar;
ifstreaminbook;
inBook.open(“books.txt”);
if(在book.is_open()中)
{

cout除了@NathanOliver很棒的帖子外,也不需要原始数组。你会遇到麻烦的。使用
std::vector
或类似的东西

#include <vector>
std::vector<char> bids;

while(bid != ' ')
{
     bids.push_back(bid);
}
cout << "Books with First Character of " + firstChar << endl;

// C++11 for loop..Otherwise loop with iterators.    
for (const auto& abid : bids)
{  
    cout << bid << endl;
}
#包括
矢量投标;
while(出价!='')
{
投标。推回(投标);
}

请注意,
while(!inBook.eof())
不是读取文件的正确方法。有关详细信息,请参阅此: