Just nu i M3-nätverket
Jump to content

problem med strängar i c++


supreme

Recommended Posts

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.

 

 

Link to comment
Share on other sites

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

 

 

Link to comment
Share on other sites

 

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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'

 

Link to comment
Share on other sites

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

 

Link to comment
Share on other sites

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 );

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...