size_t unsigned int (à partir de la fonction de l'API)

J'utilise l'Oracle de l'API pour accéder à une base de données et cette API a une fonction readBuffer(char * buffer, unsigned int size); à laquelle je ne peux faire aucune modifications.

J'ai une classe qui utilise cette API et la signature de mon heure actuelle, la fonction prend un std::string et un unsigned int pour la taille, le problème est que lorsque je passe std::string.size() à la taille de l'argument de ma fonction, je reçois un avertissement de mon compilateur que la conversion du size_t à unsigned int pourrait entraîner la perte de données.

Je me demandais si il y a un de façon valable pour convertir le size_t à un unsigned int afin que je puisse le transmettre à mon API et ne pas avoir un avertissement du compilateur?

Je comprends le but de size_t et de la recherche sur google pour cette conversion tourne un grand nombre de résultats que dire "changer la fonction de prendre un size_t arg" mais je NE peut pas modifier la signature de mon API dans ce cas.

Des suggestions?

  • size_t est en fait rien d'autre qu'un usigned de type int. Le problème est que la longueur de size_t n'est pas exactement défini, si votre système définit pour avoir plus de bits qu'un "normal" unsigned int, que vous ne pouvez rien faire pour éviter une éventuelle perte de données. L'avertissement apparaissent également lors de la coulée de façon explicite?