String Array in C++


DevX Home    Today's Headlines   Articles Archive   Tip Bank   Forums   

Results 1 to 14 of 14

Thread: String Array in C++

  1. #1
    Join Date
    Jul 2004
    Location
    czech republic, blatna
    Posts
    13

    Question String Array in C++

    I'm trying to create a string array in C++

    Code:
    const int pocetJmena = 8;
      string[] jmena = new string[pocetJmena];
        jmena[0] = "Ruzicka Vit";
        jmena[1] = "Bily Saruman";
        jmena[2] = "Veliky Saruman";
        jmena[3] = "Calculator Veliky";
        jmena[4] = "Jakekoliv Jmeno";
        jmena[5] = "Nekdo Veliky";
        jmena[6] = "Ahoj Vitek";
        jmena[7] = "Whatever Name";

    I'm including the definitions

    Code:
    #include <string>
    using std::string;
    but the program just won't work

    "main.cpp": E2108 Improper use of typedef 'string' in function main() at line 23
    "main.cpp": E2188 Expression syntax in function main() at line 23
    "main.cpp": E2451 Undefined symbol 'jmena' in function main() at line 24


    these are the three errors that I get. I'd be thankful for any help.

  2. #2
    Join Date
    Nov 2003
    Posts
    4,118
    First of all. are you sure that your source files have a .cpp extension?
    Also, you have two syntactic errors:
    Code:
    string[] jmena 
     = new string[pocetJmena];
    You need to declare an array like this:

    Code:
    string jmena[pocetJmena]; //note: the [] appears after the variable
    
    //populate array:
        jmena[0] = "Ruzicka Vit";
        jmena[1] = "Bily Saruman";
        jmena[2] = "Veliky Saruman";
        jmena[3] = "Calculator Veliky";
        jmena[4] = "Jakekoliv Jmeno";
        jmena[5] = "Nekdo Veliky";
        jmena[6] = "Ahoj Vitek";
        jmena[7] = "Whatever Name";
    There's no need to allocate the strings dynamically -- this must be a Java habit that you should get rid of in C++....
    Danny Kalev

  3. #3
    Join Date
    Jul 2007
    Posts
    7

    c++

    can somebody help me:(

    i don't know what's wrong with my program:
    this is my header file:
    // StudentInformation.h file

    #include <string> // uses string class
    using std::string;

    // StudentInformation class definition
    class StudentInformation
    {
    public:
    const static int students = 30; // constant number of student in the class
    studentInformation ( string, string, double ); // constructor that initialize the firstname, lastname and Finalscore.
    void setFirstName ( string ); // function that set the first name
    string getFirstName (); // function that get the first name
    void setLastName ( string ); // function that set the last name
    string getLastName (); // function that get the last name
    void setFinalScore ( double ); // function that set the final score
    double getFinalScore (); // function that get the final score
    void print (); // function that print the first name, last name and the final score
    void printGrades (); // function that print all the students first name, last name and the final grade
    double lowestScore (); // function that determine the lowest score
    double highestScore (); // function that determine the highest score
    double avgScore (); // function that determine the average score
    void add ( string, string, double );
    private:
    string firstName; // firstname for this student information class
    string lastName; // lastname for this student information class
    double finalScore; // final score for this student information class
    string fName[ students ]; // array of students' first name for the student information class
    string lName[ students ]; // array of students' last name for the student information class
    double fScore[ students ]; // array of student final score for the student information class
    }; // end class student information



    then this is my .cpp file:
    // StudentInformation II.cpp
    // Define class studentInformation that contains firstName, lastName, finalScore data
    // and member functions to set and get its value.
    #include <iostream> // allows program to perform input and output data
    // to the screen
    using namespace std;

    #include <string> // program uses C++ standard string class
    using namespace std;

    #include <iomanip>
    using namespace std;

    #include "StudentInformation II.h"

    // StudentInformation constructor initializes header, firstname and
    // lastname with string supplied as argument and the array finalScore.
    StudentInformation::StudentInformation( string f, string l, double s )
    {
    setFirstName( f ); // initialize firstName
    setLastName( l ); // initialize lastName
    setFinalScore(s);// initialize finalScore
    } // end of constructor

    void add( string f, string l, double s )
    {
    static double max = 0; // initialize first time add is called

    // if max is less than students, copy firstName, lastName and finalScore into their respective arrays.
    if ( max < students )
    {
    string fName[ max ] = firstName; // store firstName in array firstName
    string lName[ max ] = lastName; // store lastName in array lastName
    string fScore[ max ] = finalScore; // store finalScore in array finalScore
    max++; // increment max by 1
    }

    } // end of constructor

    // function that gets the first name
    string StudentInformation::getFirstName()
    {
    return firstName; // return object's firstName
    } // end function getFirstName

    // function that sets the first name
    void StudentInformation::setFirstName( string f )
    {
    firstName = f; // store the first name in the object
    } // end function setFirstName

    // function that gets the last name
    string StudentInformation::getLastName()
    {
    return lastName; // return object's lastName
    } // end function getLastName

    // function that sets the last name
    void StudentInformation::setLastName( string l )
    {
    lastName = l; // store the last name in the object
    } // end function setLastName

    // function that gets the finalScore
    double StudentInformation::getFinalScore()
    {
    return finalScore; // return object's finalScore
    } // end function getFinalScore

    //function that sets the finalScore
    void StudentInformation::setFinalScore( double s )
    {
    finalScore = s; // store the final score in the object
    } // end function setFinalScore

    // find minimum score
    double StudentInformation::lowestScore()
    {
    double lowScore = 100; // assume lowest grade is 100

    // loop through finalScore array
    for ( int student = 0; student < max; student++ )
    {
    // if current score lower than lowScore, assign it to lowScore
    if ( fScore[ student ] < lowScore )
    lowScore = fScore[ student ]; // new lowest score
    } // end the for loop

    return lowScore; // return lowest score
    } // end function lowestScore

    // find maximum score
    double StudentInformation::highestScore()
    {
    double highScore = 0; // assume highest score is 0


    // loop through finalScore array
    for ( int student = 0; student < max; student++ )
    {
    // if current score higher than highScore, assign it to highGrade
    if ( fScore[ student ] > highScore )
    highScore = fScore[ student ];
    } // end for

    return highScore; // return highest grade
    } // end function highestScore

    // find average score
    double StudentInformation::avgScore()
    {
    double total = 0; // initialize total

    // sum scores in array
    for ( int student = 0; student < max; student++ )
    total += fScore[ student ];

    // return average of scores
    return total / max;
    } // end function average score

    // function that print first name, last name and the final grade of all the students
    void StudentInformation::printGrades()
    {
    // output each student grade
    for ( int student = 0; student < max; student++ )
    {
    if ( fScore[ student ] >= 90 ) // if final score is more than 90, print Final Grade is A
    cout<< "\n" << fName[ student ] << setw(10) << lName[ student ] << setw(10) << "Final Grade is A";
    else if ( fScore[ student ] >= 80 ) // if final score is more than 80, print Final Grade is B
    cout<< "\n" << fName[ student ] << setw(10) << lName[ student ] << setw(10) << "Final Grade is B";
    else if ( fScore[ student ] >= 70 ) // if final score is more than 70, print Final Grade is C
    cout<< "\n" << fName[ student ] << setw(10) << lName[ student ] << setw(10) << "Final Grade is C";
    else if ( fScore[ student ] < 70 ) // if final score is less than 70, print Final Grade is F
    cout<< "\n" << fName[ student ] << setw(10) << lName[ student ] << setw(10) << "Final Grade is F";
    } // end for loop
    } // end function that print the grades of all the students

    // function that print first name, last name and finalScore
    void StudentInformation::print()
    {
    cout<< "\n\nFirst Name" << setw(10) << "Last Name" << setw(10) << "Final Score\n\n";

    // output each student's score
    for ( int student = 0; student < max; student++ )
    cout<< fName[ student ] << setw(10) << lName[ student ] << setw(10) << fScore[ student ] <<"\n";
    } // end function print


    now, this is my main() file:

    // function main of StudentInformation II.cpp
    #include <iostream>
    using namespace std;

    #include "StudentInformation II.h" // Include definition of class StudentInformation II

    // function main begins program execution
    int main()
    {
    // create one studentInformation object
    StudentInformation myStudentInformation1( "Emeric", "Bechi", 95);
    myStudentInformation1.print();
    StudentInformation myStudentInformation2( "Isaac", "Newton", 100 );
    myStudentInformation2.print();
    system ("pause");
    } // end main


    now, this is the errors that i get:
    5 C:\Dev-Cpp\StudentInformationIV.cpp In file included from C:\Dev-Cpp\StudentInformationIV.cpp

    11 C:\Dev-Cpp\StudentInformation II.h ISO C++ forbids declaration of `studentInformation' with no type

    C:\Dev-Cpp\StudentInformationIV.cpp In function `int main()':

    11 C:\Dev-Cpp\StudentInformationIV.cpp no matching function for call to `StudentInformation::StudentInformation(const char[7], const char[6], int)'

  4. #4
    Join Date
    Aug 2005
    Location
    Melbourne...Australia
    Posts
    279
    ***..

    How does this post get 8700 odd views in such a short time??

  5. #5
    Join Date
    Nov 2003
    Posts
    4,118
    There's something I didn't notice earlier:
    string[] jmena = new string[pocetJmena];

    You can't do that in C++. The left side of the expression must be a pointer. string[] is not a pointer. Furthermore, arrays in C++ must be declared like this:
    string jmena[];

    (you're probably used to Java but in C++ the [] must appear only after the variable's name).
    Danny Kalev

  6. #6
    Join Date
    Nov 2003
    Posts
    4,118
    Quote Originally Posted by Code_Nerd
    ***..

    How does this post get 8700 odd views in such a short time??
    Depends on what you mean by "short time". The original post in from 2005;)
    Danny Kalev

  7. #7
    Join Date
    Aug 2005
    Location
    Melbourne...Australia
    Posts
    279
    Quote Originally Posted by Danny
    Depends on what you mean by "short time". The original post in from 2005;)
    Good point...

    Did "W T F" get moderated?

  8. #8
    Join Date
    Nov 2003
    Posts
    4,118
    Quote Originally Posted by Code_Nerd
    Good point...

    Did "W T F" get moderated?
    Where is it? I didn't delete it, but I suppose vBulletin might have.
    I prefer to spend my time answering questions, not chasing this or that acronym.
    Danny Kalev

  9. #9
    Join Date
    Jul 2007
    Posts
    3
    String Array in C++

    --------------------------------------------------------------------------------

    I'm trying to create a string array in C++


    Code:
    const int pocetJmena = 8;
    string[] jmena = new string[pocetJmena];
    jmena[0] = "Ruzicka Vit";
    jmena[1] = "Bily Saruman";
    jmena[2] = "Veliky Saruman";
    jmena[3] = "Calculator Veliky";
    jmena[4] = "Jakekoliv Jmeno";
    jmena[5] = "Nekdo Veliky";
    jmena[6] = "Ahoj Vitek";
    jmena[7] = "Whatever Name";
    this is java syntax, hence it will not work in c++.

  10. #10
    Join Date
    Nov 2007
    Posts
    3
    Quote Originally Posted by Danny
    First of all. are you sure that your source files have a .cpp extension?
    Also, you have two syntactic errors:
    Code:
    string[] jmena 
     = new string[pocetJmena];
    You need to declare an array like this:

    Code:
    string jmena[pocetJmena]; //note: the [] appears after the variable
    
    //populate array:
        jmena[0] = "Ruzicka Vit";
        jmena[1] = "Bily Saruman";
        jmena[2] = "Veliky Saruman";
        jmena[3] = "Calculator Veliky";
        jmena[4] = "Jakekoliv Jmeno";
        jmena[5] = "Nekdo Veliky";
        jmena[6] = "Ahoj Vitek";
        jmena[7] = "Whatever Name";
    There's no need to allocate the strings dynamically -- this must be a Java habit that you should get rid of in C++....
    Is there anybody that can help me? I am trying to declare a static string array. But have no idea how and where it should be declared. I am very very confused. Please help??

  11. #11
    Join Date
    Nov 2003
    Posts
    4,118
    #include <string>

    std::string strarray[3] = {"first", "second", "third"};
    Danny Kalev

  12. #12
    Join Date
    Nov 2007
    Posts
    3

    So Confused!

    Would I declare that in the header file or the cpp file?

    I need to store the values in an array so that they can be used later to change the state of a lot in an auction, e.g. assigned, unassigned, or sold.

    Am I going about the whole thing incorrectly!!! :(

  13. #13
    Join Date
    Nov 2003
    Posts
    4,118
    Definitions should always appear in the .cpp file, especially when they contain initializers. If you add this array definition to a header file, you will get a linker error.
    Danny Kalev

  14. #14
    Join Date
    Nov 2007
    Posts
    3

    Thank you

    Thank you, that explains everything. ;)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
HTML5 Development Center
 
 
FAQ
Latest Articles
Java
.NET
XML
Database
Enterprise
Questions? Contact us.
C++
Web Development
Wireless
Latest Tips
Open Source


   Development Centers

   -- Android Development Center
   -- Cloud Development Project Center
   -- HTML5 Development Center
   -- Windows Mobile Development Center