Je rassemble des données entre une application C# et C++. Dans l'application C#, je force la taille d'une chaîne à une certaine taille (disons, 256 octets). Je voudrais lire exactement la même quantité en C++ (je vais recréer les structures avec reinterpret_cast) pour que les données restent formatées comme dans l'application C#. Malheureusement, je suis assez rouillé avec C++ et je ne sais pas comment forcer la taille d'une chaîne dans une structure en C++.Est-il possible de forcer une chaîne à avoir une taille spécifique lors de la définition d'une structure?
Comme demandé, un exemple. J'ai un struct en C# qui ressemble à ceci:
[StructLayout(LayoutKind.Sequential)]
public struct DataLocater
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string filename;
[MarshalAs(UnmanagedType.I4)]
public Int32 sizeOfData;
public Int32 startLocation;
public Int32 encrypted;
}
que je mobilisons plusieurs (ainsi que d'autres données) à un fichier de données. Le fichier C++ lit alors ce fichier et je vais l'analyser de nouveau en struct en C++ avec la même structure. Ma première tentative de ce struct ressemblait à:
struct DataLocater
{
std::string filename;
int sizeOfData;
int startLocation;
int encrypted;
};
Mais il n'y a aucun moyen pour le compilateur de savoir que je veux que std :: string soit 256 octets.
modifier: ajouter un fichier d'en-tête complet par exemple.
#pragma once
#include "CoreArea/Singleton.h"
class FileReader : public Singleton<FileReader>
{
friend class Singleton<FileReader>;
public:
void* GetFileData(std::wstring fileName, int &size);
private:
FileReader();
~FileReader();
struct Header
{
std::string somestring;
int numOfFiles;
};
struct DataLocater
{
char[256] filename;
int sizeOfData;
int startLocation;
int encrypted;
};
};
Il n'y a pas question ici. Astuce: les questions se terminent par un point d'interrogation (?). – abelenky
La question est dans le titre. Le corps contient une description. – Chris
Indice: le titre de la question se termine par un point d'interrogation –