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 ?

Pourquoi l'écriture d'un std::string dans un fichier produit-elle des boîtes au lieu de texte ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-26 21:00:171026parcourir

Why Does Writing a std::string to a File Produce Boxes Instead of Text?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn