Try writing your code like this:
#include <iostream>
#include <fstream>
int main()
{
    std::string file;
    std::cout << "Insert Path" << std::endl;
    std::getline(std::cin, file);
    std::cout << file << std::endl;
    std::ifstream filein(file);
    for (std::string line; std::getline(filein, line); )
    {
        std::cout << line << std::endl;
    }
    return 0;
}
Notable edits include:
- We're now constructing the ifstreamobject only when we need it, afterfilehas had data stored, which means no more undefined behavior, and that we only attempt to open a file after we know what the path is.
- We're retrieving a whole line when storing to file, instead of only the first word, which is crucial if your path includes any spaces.
- We're just using the filestring directly. There's no need to callc_str().
- We're no longer using using namespace std;. There are many, many reasons why this is bad practice.
EDIT:
If you have a C++17-compliant compiler, I'm going to propose you write code that looks like this instead:
#include <iostream>
#include <fstream>
//You may need to write #include <experimental/filesystem>
#include <filesystem>
#include <string>
int main()
{
    std::string input_line;
    std::cout << "Insert Path" << std::endl;
    std::getline(std::cin, input_line);
    //You may need to write std::experimental::filesystem
    std::filesystem::path file_path{input_line};
    //This will print the "absolute path", which is more valuable for debugging purposes
    std::cout << std::filesystem::absolute(file_path) << std::endl;
    std::ifstream filein(file_path);
    for (std::string line; std::getline(filein, line); )
    {
        cout << line << endl;
    }
    return 0;
}
Explicit use of path objects will make your code more readable and make errors more explicit, as well as grant you access to behavior you otherwise would not be able to access.