Just nu i M3-nätverket
Gå till innehåll

problem med strängar i c++


supreme

Rekommendera Poster

Hejsan

 

är välldigt ny i detta med c++ och har följade problem. Har deklarerat en variabel tosend som nedan:

 

char tosend[1000];

 

Och när jag försöker göra detta:

 

tosend = "HTTP/1.1 200 OK\r\n"

 

 

Så får jag följande meddelande i kompilatorn

 

g++ cppserver.cpp -o testar -lsocket -lnsl

cppserver.cpp: In function `int main()':

cppserver.cpp:132: incompatible types in assignment of `const char[18]' to `char[1000]'

 

 

Hoppas någon kan hjälp mig.

 

 

Länk till kommentar
Dela på andra webbplatser

Du kan inte använda = operatorn, du får använda strcpy.

 

strcpy(tosend, "HTTP/1.1 200 OK\r\n");

 

/Jocke

 

"Shit! What? Rollers. No? Yeah. Shit!" - Blues Brothers

 

 

Länk till kommentar
Dela på andra webbplatser

 

Ok detta fungerade ju kanon.

 

Men nu har jag ett nytt problem, har följande sträng som kopiers in i tosend

 

strcpy(tosend, "Content-Length: 4\r\n");

 

nu vill jag byta 4:an mot en variabel av typen int, hur fungerar detta i c++??

 

mvh

 

Länk till kommentar
Dela på andra webbplatser

Enklast är väl att lägga till en fprintf() före som skriver ut en ny variabel som sedan kpoieras till tosend.

 

Länk till kommentar
Dela på andra webbplatser

Eftersom vi pratar C++ kan vi väl glömma det där med char* och använda oss av STL::string istället? =D

 

--

.Wey

 

Future Hero Next Generati0n

 

Länk till kommentar
Dela på andra webbplatser

STL::string

För mycket overhead. ;-p

 

Självklart verkar det som det är det han vill ha, _plussa_ ihop strängar, guud så fånigt ;)

 

/TN

C ska de va'

 

Länk till kommentar
Dela på andra webbplatser

Självklart verkar det som det är det han vill ha, _plussa_ ihop strängar, guud så fånigt ;)

 

operatoröverlagring rockar stenfett juh!

 

..för mycket overhead... hmm.. vete tusan? då får man väl vara bra duktig på att skriva effektiv(are) kod..? ;)

 

--

.Wey

 

Future Hero Next Generati0n

 

Länk till kommentar
Dela på andra webbplatser

jerker olofsson

Använd std::stringstream klassen och använd std::string klassen.

 

Enkelt exempel på std::string:

#include <string>
using namespace std;

string s1 = "HTTP/1.1";
s1 += " 200";
s1 += " OK\r\n";

// För att accessa en null terminerad sträng gör du:
// s1.c_str();

Socket.write( s1.c_str(), s1.length() );

 

Tyvärr går det inte att "concat":a en int till en sträng, utan då får du använda stringstreams..

 

Stringstreams fungerar som vanliga iostreams, men du kan få ut en std::string när du är klar.

 

Exempel:

#include <sstream>
#include <string>
using namespace std;

// instantiera en stringstream
stringstream ss;

// Lägg till massa saker

// HTTP header
ss << "HTTP/1.1 200 OK\r\n";
ss << "Server: blahg\r\n";

// Content length
unsigned int ContentLength = 122;
ss << "Content-Length: " << ContentLength << "\r\n";

// End of HTTP header
ss << "\r\n";

// Skriv HTTP header.
string Header = ss.str();
Socket.write( Header.c_str(), Header.length() );

// Skriv HTTP body
Socket.write( BodyBuffer, ContentLength );

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...