Click here to Skip to main content
15,917,627 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I'm a 13 year old who's just tring to experiment with things in C++. I declared a vector for storing the contents of a file and a pointer with dynamically allocated memmory. With this, I could perhaps make some sort of an local account database. Although when comparing the two, I get thrown an exeption (Segmentation fault) did some research and I think it means I'm writing or reading from a memmory illegally?



C++
          std::string* user_details_confirmation = new std::string[3];
    
                  
                    for (int i = 0; i < 6; i++){ std::cout << " "; }
                    std::cout << "First Name : ";

                    std::cin >> user_details_confirmation[0];
                    if(user_details_confirmation[0] == setup_file_contents_vec[0]) {};
                    system("cls");
<pre lang="C++">


What I have tried:

I changed both of the variables to vectors.
Code was originally in a loop (Got rid of it).
Posted
Updated 13-Oct-21 7:00am
v3

Sorry, that wasn't meant to be a solution; just informative. Personally, I'd probably create a temp variable for the input, then use the push_back method, like k5054 suggested.

Something like this, perhaps:

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

int main()
{
    std::vector<std::string> user_details_confirmation{};
    std::vector<std::string>setup_file_contents_vec{ "timmy", "jimmy" };
    
    for(auto& iter : setup_file_contents_vec)
    {
        cout << "   setup_file_contents_vec: " << iter << std::endl;
    }
    
    std::string input_value;
    std::cout << "First Name : ";
    std::cin >> input_value;
    
    user_details_confirmation.push_back(input_value);

    std::cout << "user_details_confirmation: " << user_details_confirmation[0] << std::endl;
    std::cout << "setup_file_contents_vec: " << setup_file_contents_vec[0] << std::endl;
    
    
    if(user_details_confirmation[0] == setup_file_contents_vec[0]) 
    {
        std::cout << "EQUAL";
    }
    
    
    return 0;
}
 
Share this answer
 
Comments
apetrai 13-Oct-21 13:04pm    
Oh it's alright, yes, I did try this method, still got thrown an excpetion.
apetrai 13-Oct-21 13:06pm    
If this is relevant, this is inside a class member. And the setup_file_contents_vec is inside the class. Because I use it before to define it with getting the contents of the file inside in another member.
apetrai 13-Oct-21 13:09pm    
I have a github repo with this code. If you need additional info you can check it https://github.com/Gamerguy123lo/EXPONOS_Console
apetrai 13-Oct-21 13:49pm    
@BrianPendleton
Also, I am not certain that you can read directly into a vector like that without creating that element first. This worked for me, tested here[^] :

#include <iostream>
#include <iomanip>
#include <vector>

using namespace std;

int main()
{
    std::vector<std::string> user_details_confirmation{""};
    std::vector<std::string>setup_file_contents_vec{ "timmy", "jimmy" };
    
    for(auto& iter : setup_file_contents_vec)
    {
        cout << "   setup_file_contents_vec: " << iter << std::endl;
    }
    
    std::cout << "First Name : ";
    std::cin >> user_details_confirmation[0];

    std::cout << "user_details_confirmation: " << user_details_confirmation[0] << std::endl;
    std::cout << "setup_file_contents_vec: " << setup_file_contents_vec[0] << std::endl;
    
    
    if(user_details_confirmation[0] == setup_file_contents_vec[0]) 
    {
        std::cout << "EQUAL";
    }
    
    
    return 0;
}
 
Share this answer
 
Comments
apetrai 13-Oct-21 12:56pm    
Initializing the vector lead to my console crashing immediately.
Given that you've defined setup_file_contents_vec, but not initialized it, then setup_file_contents_vec[0] does not exist. So trying to assign a value to it results in a run-time error. You probably want to be using the std::vector push_back() method to add new items to the vector.
 
Share this answer
 
Comments
apetrai 13-Oct-21 12:55pm    
Initializing the vector lead to my console crashing instantly.
In that case, that's most likely your problem. The vector "setup_file_contents_vec" has zero elements with your definition.
 
Share this answer
 
Comments
apetrai 13-Oct-21 12:48pm    
Although it is later defined:

std::string temp_var_to_vec;

while(setup_file_required_scan >> temp_var_to_vec) { setup_file_contents_vec.push_back(temp_var_to_vec); }
Where is the definition of "setup_file_contents_vec"?
Is it initialized?
 
Share this answer
 
Comments
apetrai 13-Oct-21 12:40pm    
@BrianPendleton It's not, std::vector<std::string>setup_file_contents_vec{};

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900