Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [C++] std::string concatenare stringhe

    Salve,

    volevo scrivere una funzione che mi ritornasse data e ora in questo formato:

    Fri, 10 Oct 2008 14:41:59 GMT
    però mi sono subito arenato nella concatenazione di stringhe:

    codice:
    	// getDateTime
    	std::string getDateTime(void)
    	{
    		time_t rawtime;
    		struct tm * timeinfo;
    
    		time(&rawtime);
    		timeinfo = gmtime(&rawtime);
    
    		std::string s = "Year: " + timeinfo->tm_year;
    
    		return s;
    	}
    il seguente codice mi ritornail carattere < ??? anche se forzo timeinfo con (char*)

    com'è possibile?

    grazie
    Alla batteria dai retta ballA

  2. #2
    ho risolto così:

    codice:
    	std::string getDateTime(void)
    	{
    		time_t rawtime;
    		struct tm * timeinfo;
    
    		time(&rawtime);
    		timeinfo = gmtime(&rawtime);
    
    		char buffer[30];
    		strftime(buffer,30,"%a, %d %b %Y %X GMT",timeinfo);
    		return (std::string)buffer;
    	}
    Però una cosa, è possibile che sia gmtime che localtime siano unsafe per VC++ EE a momoenti nemmeno con #define _CRT_SECURE_NO_WARNINGS me le copre!!
    Alla batteria dai retta ballA

  3. #3
    Il problema di quelle funzioni è che non sono rientranti e usano un buffer interno condiviso tra più funzioni di quella famiglia che viene restituito al chiamante, per cui si può incorrere facilmente in problemi se si chiamano queste funzioni una dopo l'altra e ci si aspetta che i dati restituiti da ciascuna di esse restino indipendenti dagli altri. Mi pare comunque che lo standard non fornisca nulla di meglio, per cui, a meno di non usare le estensioni Microsoft (non standard = no buono) non puoi fare molto altro.
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.