PDA

View Full Version : [C++] Problema con le virgolette in una stringa


Albitexm
26-05-2013, 07:39
Io devo creare una stringa che rappresenta la data in questo modo: "[Date "2013.05.26"] ".

Io scrivo:

string datas="[Date \""+fundata()+"\"] ";
dove string fundata(); è una funzione che ritorna una stringa con la data. Io ottengo>
[Date "Sun May 26 06:05:57 2013
"]
L'ultima "\" viene considerata come a capo. Ho provato anche a incorporare la costruzione della stringa nella funzione, ma ho lo stesso problema.
Come fare per non andare a capo e includere le due virgolette nella stringa?

Poi come cambiare il formato della data da "Sun May 26 06:05:57 2013" in "2013.05.26" ?
La funzione che mi restituisce la data lo scritta:

// funzione data
string datamon()
{
time_t adesso;
struct tm *ptr;
string data;
adesso=time(0);
ptr= localtime(&adesso);
data=asctime(ptr);
return data;

}

lorenzo001
26-05-2013, 09:31
L'ultima "\" non c'entra nulla, e' la funzione asctime che aggiunge il ritorno a capo.

Modifica la funzione così e risolvi tutti e due i problemi


#include <sstream>
#include <iomanip>

string datamon()
{
time_t adesso;
struct tm *ptr;
ostringstream cvt;

adesso=time(0);
ptr= localtime(&adesso);

cvt << ptr->tm_year+1900 << ".";
cvt << setfill('0') << setw(2) << ptr->tm_mon+1 << ".";
cvt << setw(2) << ptr->tm_mday;
return cvt.str();
}

AllerITA
26-05-2013, 09:46
Per quanto riguarda la formattazione della data prova ad usare strftime:

strftime() (http://www.cplusplus.com/reference/ctime/strftime/)

dell'altro problema non so risponderti.

EDIT: come non detto ti hanno già risposto.

Albitexm
26-05-2013, 21:57
L'ultima "\" non c'entra nulla, e' la funzione asctime che aggiunge il ritorno a capo.
Modifica la funzione così e risolvi tutti e due i problemi
[/code]

Era proprio così, la funzione generava il ritorno a capo. Con il tuo codice ho risolto entrambi i problemi, ha funzionato al primo colpo. :) Thank

Albitexm
26-05-2013, 21:59
.