How to write std::string to file?

前端 未结 3 1904
半阙折子戏
半阙折子戏 2020-11-28 06:19

I want to write a std::string variable I am accepting from the user to a file. I tried using the write() method and it writes to the file. But when

相关标签:
3条回答
  • 2020-11-28 06:22

    remove the ios::binary from your modes in your ofstream and use studentPassword.c_str() instead of (char *)&studentPassword in your write.write()

    0 讨论(0)
  • 2020-11-28 06:32

    Assuming you're using a std::ofstream to write to file, the following snippet will write a std::string to file in human readable form:

    std::ofstream file("filename");
    std::string my_string = "Hello text in file\n";
    file << my_string;
    
    0 讨论(0)
  • 2020-11-28 06:39

    You're currently writing the binary data in the string-object to your file. This binary data will probably only consist of a pointer to the actual data, and an integer representing the length of the string.

    If you want to write to a text file, the best way to do this would probably be with an ofstream, an "out-file-stream". It behaves exactly like std::cout, but the output is written to a file.

    The following example reads one string from stdin, and then writes this string to the file output.txt.

    #include <fstream>
    #include <string>
    #include <iostream>
    
    int main()
    {
        std::string input;
        std::cin >> input;
        std::ofstream out("output.txt");
        out << input;
        out.close();
        return 0;
    }
    

    Note that out.close() isn't strictly neccessary here: the deconstructor of ofstream can handle this for us as soon as out goes out of scope.

    For more information, see the C++-reference: http://cplusplus.com/reference/fstream/ofstream/ofstream/

    Now if you need to write to a file in binary form, you should do this using the actual data in the string. The easiest way to acquire this data would be using string::c_str(). So you could use:

    write.write( studentPassword.c_str(), sizeof(char)*studentPassword.size() );
    
    0 讨论(0)
提交回复
热议问题