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

    [C++] passare variabili a system()

    Devo rinominare delle immagini aggiungendo due caratteri prima dell'estensione ".jpg"
    (immagine01.jpg in immagine01_B.jpg, immagine02.jpg in immagine02_B.jpg e così via...)

    ho scribacchiato questo, ma non so come passare le variabili alla funizone system() invece di stamparle con cout<<

    codice:
    #include <iostream>
    #include <string>
    #include <stdio.h>
    using namespace std;
    
    
    int main(){
      string name="immagine", ext=".jpg", numToString;
      char num[2];
      for(int n=0; n <= 85; n++){
        sprintf(num, "%d", n);
        numToString=num;
        if(numToString.length()==1){
        numToString="0"+numToString;
        }
        cout<< "ren " << name << numToString << ext << " " << name << numToString << "_B" << ext << "\n";
        //system(??);
      }
      return 0;
    }
    grazie in anticipo

  2. #2
    ora non ho provato con i tipi di dato string (del c++)
    ma devi prima concatenare la stringa con il comando DOS
    da passare a system()... tipo:

    char command[50]="COPY ", opz1[]="file1 ", opz2[]="file2";

    strcat(command, opz1);
    strcat(command, opz2);

    system(command);
    ...Terrible warlords, good warlords, and an english song

  3. #3
    in C++:

    string command = "COPY ", opz1 = "FILE1 ", opz2 = "FILE2";

    command = command + opz1 + opz2;

    system(command.c_str());
    ...Terrible warlords, good warlords, and an english song

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    74
    con "string" e' piu' immediato :
    (devi aggiungere #include <string>)
    string s1("s1 + ");
    string s2("s2");

    s1 += s2; //scrive "s1 + s2".

    se invece ci sono gia' tipi char :

    char s3[] = " + s3 ";

    s1 += s3; //scrive "s1 + s2 + s3".

    Se poi devi estrarre dall'oggetto "string" un puntatore a caratteri , usi il metodo :

    char *s4 = s1.c_str();

    In definitia la sintassi e' simile a quella usata per le stringhe di java.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    74
    asd , abbiamo postato assieme .

  6. #6
    Grazie 1000 funziona a meraviglia
    però non capisco come mai l'eseguibile compilato pesa 1,15 MB o_O
    sarà qualche impostazione di compilazione di dev-c++?

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    74
    1.15 mb?!? . Alla faccia.
    Potresti aver abilitato il "debug" , che aggiunge altre informazioni al file eseguibile.
    Potresti aver linkato qualche libreria statica (.lib) molto grande.

  8. #8
    codice:
    #include <sstream>
    
    using namespace std;
    
    string rinomina( const string& nome, const unsigned indice, const string& suffisso, const string& estensione )
    {
        stringstream ss;
        const string prefisso_indice = ( indice < 10 ? "0" : "" );
    
        ss << "ren " << nome << prefisso_indice << indice << '.' << estensione << ' ' << nome << prefisso_indice << indice << suffisso << '.' << estensione;
    
        return ss.str();
    }
    
    ...
    
    int main()
    {
        ...
        system( rinomina( "immagine", i, "_B", "jpg" ).c_str() );
        ...
    }

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.