C ++ String zur Python -Begrenzung mit SWig

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: C ++ String zur Python -Begrenzung mit SWig

by Anonymous » 30 Apr 2025, 21:08

Ich habe kürzlich eine SWig -Einschränkung im Zusammenhang mit der Größe von C ++ std :: string gestoßen. Mir ist aufgefallen, dass das Paar, wenn die Größe der Zeichenfolge im Paar kleiner ist, als 2*1024*1024*1024-64 (2 GB) das Paar ordnungsgemäß zurückgibt und die Saite einer python-nativen Zeichenfolge abgebildet ist. Wenn die Saite jedoch größer als 2 GB ist, wird die Schnur in Python nicht mehr auf eine native Python -Saite abgebildet. Zum Beispiel mit dem folgenden Code und der Zuordnung von Swig nach Python können Sie meinen Fehler reproduzieren. Python 2.7.12 < /p>

/////////// bridge.h
#include
#include
#include
#include
#include
using namespace std;
pair large_string(long sz);
long size_pstring(pair& p);
void print_pstring(pair& p);
string save_pstring(pair& p);

//////////bridge.cc
#include "bridge.h"

pair large_string(long sz){
pair pis;
pis.first=20;
pis.second=string(sz,'A');
return pis;
}

long size_pstring(pair& p){
return p.second.size();
}

void print_pstring(pair& p){
cout>> print l
2147483648
>>> fname = graphdb.save_pstring(s)
< /code>

Das Speichern der Zeichenfolge in einer Datei ist korrekt und als nächstes kann ich die Datei in eine Python -Zeichenfolge korrekt laden. < /p>

MEINE FRAGE: Weiß jemand, welche SWig-Konfigurationsoption ich ändern sollte, damit große Strings ordnungsgemäß auf native Python zugeordnet werden können?>

Top