Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703

    [c++]conversione da intero a stringa non funzionante

    allora, io leggo da file una stringa..che di fatto è un numero,lo converto in intero tramite la funzione atoi(argomento) e successivamente lo aumento di 1.
    Ora mi serve riconvertirlo in stringa..ho provato:

    int num;
    string x;

    x = num.str();

    ma non va...come posso risolvere??? :master:

  2. #2
    Puoi usare la itoa, la sscanf o la classe istringstream.
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    itoa non mi viene riconociuta, nonostante abbia dentro queste dichiarazioni:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <stdlib.h>

    ho quindi:

    int numero; //contiene il numero
    char c[40];


    ho fatto..

    itoa(numero,c,40);

    mi restituisce --> itoa was not declared in this scope , come mai?? Mi faresti un esempio con sscanf che non l'ho capito?? L'ultima alternativa vorrei aspettare un attimo..

  4. #4
    La itoa non è standard, per cui il tuo compilatore potrebbe non fornirla; per la sprintf (ho scritto sscanf, ma mi ero confuso), basta semplicemente fare
    codice:
    sprintf(c,"%d",numero);
    la snprintf è meglio perché è più sicura
    codice:
    snprintf(c,sizeof(c),"%d",numero);
    c[sizeof(c)-1]=0;
    .
    D'altra parte se lavori in C++ con la classe string la cosa migliore a ben vedere è la classe ostringstream (e daje, prima ho scritto istringstream ).
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2006
    Messaggi
    703
    ah non sapevo che itoa non fosse compreso, comunque utilizzo codeblocks..
    per quanto riguarda snprintf(pathfile,sizeof(pathfile),"%d",numero) funziona bene , tuttavia non ho capito cosa fa questa istruzione:
    codice:
    c[sizeof(c)-1]=0;
    dopo la conversione ripristina a 0 la dimensione di c?Perchè?

    Per quanto riguarda la ostringstream, a quale funzione ti riferisci in particolare?

  6. #6
    Utente di HTML.it L'avatar di Stoicenko
    Registrato dal
    Feb 2004
    Messaggi
    2,254
    dopo la conversione ripristina a 0 la dimensione di c?Perchè?
    No, quell'istruzione mette l'ultimo carattere a "0" come da standard stringhe di caratteri..

  7. #7
    Originariamente inviato da cleaner
    ah non sapevo che itoa non fosse compreso, comunque utilizzo codeblocks..
    per quanto riguarda snprintf(pathfile,sizeof(pathfile),"%d",numero) funziona bene , tuttavia non ho capito cosa fa questa istruzione:
    codice:
    c[sizeof(c)-1]=0;
    dopo la conversione ripristina a 0 la dimensione di c?Perchè?
    Manuale C
    #include <stdio.h>
    int snprintf(char* buffer, size_t nsize, const char* fmt, ...);

    Description :
    Sends formatted output to a buffer of a maximum length specified by nsize.
    If the number of bytes to output is:
    < nsize, then all of the characters have been written, including the terminating ‘\0’ character.
    == nsize, then nsize characters are written, with no terminating ‘\0’ character.
    > nsize, then only nsize characters are written, with no terminating ‘\0’ character.
    If nsize is 0, then the string will not be written to (and may be NULL).

    Return Value

    Number of bytes output, or, if nsize is 0, the number of bytes needed, not including the terminating ‘\0’ character.
    Originariamente inviato da cleaner
    Per quanto riguarda la ostringstream, a quale funzione ti riferisci in particolare?
    codice:
    	stringstream stream;
    	int i = 123456;
    	// stream.width(12); // Opzionali
    	// stream.fill('0'); // Opzionali
    	stream << i;
    	cout << stream.str() << endl;

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.