Maison >développement back-end >C++ >Pourquoi l'écriture d'un std::string dans un fichier produit-elle des boîtes au lieu de texte ?
Comment écrire une chaîne std::string dans un fichier sans voir les cases
Question :
Lors de l'écriture d'une variable std::string dans un fichier à l'aide de la méthode write(), le fichier résultant affiche des cases au lieu de la chaîne attendue. Est-ce que std::string est adapté à ce scénario, ou une approche alternative doit-elle être envisagée ?
Réponse :
std::string convient en effet à l'écriture dans des fichiers, mais la méthode write() est destinée aux données binaires. Pour écrire une chaîne au format texte, pensez à utiliser un objet ofstream. Voici un exemple :
#include <fstream> #include <string> #include <iostream> int main() { std::string name; std::cout << "Enter your name: "; std::cin >> name; std::ofstream out("name.txt"); out << name; // Writes the string to the file in text format out.close(); return 0; }
Pour l'écriture binaire, utilisez la méthode c_str() pour obtenir les données de caractères sous-jacentes et écrivez-les dans le fichier :
#include <fstream> #include <string> #include <iostream> int main() { std::string password; std::cout << "Enter your password: "; std::cin >> password; std::ofstream out("password.bin", std::ios::binary); out.write(password.c_str(), password.size()); // Writes the password in binary format out.close(); return 0; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!