c++ - 数组和搜索它们

标签 c++ arrays string debugging

今晚我要完成最后的调试。我的问题是我已经编写这段代码几天了,它有一些问题。 Previous Post

它现在可以编译并且不会崩溃,但是我的函数有一些问题无法正常工作(或根本无法正常工作)。

#include <iostream>              
#include <string>
#include <fstream>
using namespace std; 

string bookTitle [50];
string bookAuthor [50];
int loadData (string pathname);         
int showall (int counter);
int authorSearch (string bookAuthor [50]);




int main ()

{  
    string pathname;
    int counter=0;
    char choice;

    cout<<"Input the name of the file to be accessed: ";
    cin>>pathname;
    loadData (pathname);
    showall (counter);

    cout<<"\n\n\n\n What would you like to do \n (A for Author Search , T for Title Search, Q to quit):";
    cin>>choice;

    while (choice != 'Q' , choice != 'q')
    {
          if (choice == 'A', choice == 'a')
          {
                    int authorSearch (string bookAuthor [50], char choice);
          }

          if (choice == 'T', choice == 't')
          {
                     int   titleSearch (string bookTitle [50], char choice);   
          }   


    }

    cout<<"Press <Enter> to Exit";
    cin.ignore();
    cin.get();      
    return 0;              

    cout<<"Press <Enter> to Exit";
    cin.ignore();
    cin.get();      
    return 0;                
}


int loadData (string pathname) // Loads data from infile into arrays
{
    fstream infile; 
    int counter = 0;
    infile.open(pathname.c_str()); //Opens file from user input in main
    if( infile.fail() )
     {
         cout << "File failed to open";
         return 0;
     }   

     while (!infile.eof())
     {

           infile >> bookTitle [counter] ;  //takes input and puts into parallel arrays
           infile >> bookAuthor [counter];
           counter++;
     }

     infile.close();
}

int showall (int counter)        // shows input in title(author) format
{

     cout<<bookTitle<<"("<<bookAuthor<<")";   

}

void authorSearch (string bookAuthor [50], char choice) // Function to search Author Array
{
     string target = "";
     cout<<"Which author would you like to search for: "<<target; //input
     for (int count = 0; count++;)
     {
         if(bookAuthor[count] == target) //tests input against array and outputs result
         {
                              cout<<bookTitle[count]<<bookAuthor[count];
         }
     }

}



void titleSearch (string bookTitle [50], char choice) // Function to Serch Title Array
{
     string target = "";
     cout<<"Which author would you like to search for: "<<target; //input
     for (int count = 0; count++;)
     {
         if(bookAuthor[count] == target) //tests input against array and outputs result
         {
                              cout<<bookTitle[count]<<bookAuthor[count];
         }
     }

}

最新版本,无重大改进。选择菜单后,我无法使用这些功能。 ShowAll 似乎有效但输出十六进制。再次感谢大家!

#include <iostream>              
#include <string>
#include <fstream>
using namespace std; 

string bookTitle [50];
string bookAuthor [50];
int loadData (string pathname);         
int showall (int counter);
void authorSearch (string bookAuthor [50]);
void titleSearch (string bookTitle [50]);



int main ()

{  
    string pathname;
    int counter=0;
    char choice;

    cout<<"Input the name of the file to be accessed: ";
    cin>>pathname;
    loadData (pathname);
    showall (counter);

    cout<<"\n\n\n\n What would you like to do \n (A for Author Search , T for Title Search, Q to quit):";
    cin>>choice;

    while (choice != 'Q'|| choice != 'q')
    {
          if (choice == 'A'|| choice == 'a')
          {
                   void authorSearch (string bookAuthor [50], char choice);
          }

          if (choice == 'T'|| choice == 't')
          {
                    void titleSearch (string bookTitle [50], char choice);   
          }   


    }

    cout<<"Press <Enter> to Exit";
    cin.ignore();
    cin.get();      
    return 0;              

}


int loadData (string pathname) // Loads data from infile into arrays
{
    fstream infile; 
    int counter = 0;
    infile.open(pathname.c_str()); //Opens file from user input in main
    if( infile.fail() )
     {
         cout << "File failed to open";
         return 0;
     }   

     while (!infile.eof())
     {

           infile >> bookTitle [counter] ;  //takes input and puts into parallel arrays
           infile >> bookAuthor [counter];
           counter++;
     }

     infile.close();
}

int showall (int counter)        // shows input in title(author) format
{

     cout<<bookTitle<<"("<<bookAuthor<<")";   

}

void authorSearch (string bookAuthor [50], char choice) // Function to search Author Array
{
     string target = "";
     cout<<"Which author would you like to search for: "<<target; //input
     for (int count = 0; count++;)
     {
         if(bookAuthor[count] == target)
         {
                              cout<<bookTitle[count]<<bookAuthor[count];
         }
     }

}



void titleSearch (string bookTitle [50], char choice) // Function to Serch Title Array
{
     string target = "";
     cout<<"Which title would you like to search for: "<<target; //input
     for (int count = 0; count++;)
     {
         if(bookAuthor[count] == target) //tests input against array and outputs reults
         {
                              cout<<bookTitle[count]<<bookAuthor[count];
         }
     }

}

最佳答案

逗号运算符应分别替换为符合逻辑的andor&&||。参见 uses of the comma operator .此外,authorSearch 是一个 void 函数。如果您想调用 authorSearch,只需编写 authorSearch(...) 而不是 int authorSearch(...)

此外,您需要确保您的原型(prototype)与您的实现一致。 int authorSearch (string bookAuthor [50])void authorSearch (string bookAuthor [50], char choice) 不同。您不匹配它们的类型它们的参数。

关于c++ - 数组和搜索它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9848821/

相关文章:

javascript - mongodb findone返回值-数组操作

string - 如何删除Erlang中字符串内的周围引号?

c++ - 获取远程主机IP地址QTcpServer

c++ - is_constant_evaluated() 应该产生 constexpr 变量?

c++ - 了解嵌套结构

c++ - 分数计划 - 返回等问题

javascript - 如何将第一个元素与其余元素进行比较,以及如何将第二个元素与其余元素进行比较以及相同的重复

javascript - 将数组中的相似记录分组为一个键?

c# - 内存中烧录System.String

Java - 将字符串数组修改为ArrayList<String>