Avatar billede quiw Nybegynder
12. oktober 2005 - 12:04 Der er 11 kommentarer og
1 løsning

SammenSætte Chars Igen..

Okay.. Jeg ville sammensætte 2 strings.. Men det virker åbenbart Sjovt nok ikke .. Har prøvet Cirka alt.. Og har prøvet andres spørgsmål.. men intet vil virke.. Min kode er :
#include <iostream>
#include <string.h>


using namespace std;
int main()
{
    int size;
    int done;
    done = 0;
    char* name="file";
    char* type=".sys";
    cout << "Please enter Copy Times: \n";
    cin >> size;
    string* cmd;
    strcat(cmd,name,size,type);
   
    while(done<size)
    {
    done++;
    system(cmd);
    cout << "<"<<done<<"Mb Completed.. \n";
    }
    cout << "Copy Complete !\n";
    system("pause");
    return 0;
}
Avatar billede arne_v Ekspert
12. oktober 2005 - 12:48 #1
strcat tager kun 2 argumenter

første argument til strcpy skal pege på noget plads (enten et array eller en pointer
som peger på noget new'et)
Avatar billede quiw Nybegynder
12. oktober 2005 - 12:54 #2
Okay.. Men burde det så ikke virke nu ?
#include <iostream>
#include <string.h>


using namespace std;
int main()
{
    int size;
    int done;
    done = 0;
    char name[5]="file";
    char type[5]=".sys";
    cout << "Please enter Copy Times: \n";
    cin >> size;
    string cmd[1000];
    strcat(cmd, name);
    strcat(cmd, size);
    strcat(cmd, type);
   
    while(done<size)
    {
    done++;
    system(cmd);
    cout << "<"<<done<<"Mb Completed.. \n";
    }
    cout << "Copy Complete !\n";
    system("pause");
    return 0;
}
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:10 #3
du kan ikke strcat'e en int
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:11 #4
string cmd[1000];
    strcpy(cmd,"");
    strcat(cmd, name);
    strcat(cmd, type);

vil virke
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:11 #5
men det er meget smartere at brug sprintf !
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:12 #6
hov

    char cmd[1000]; // <---- char ikke string
    strcpy(cmd,"");
    strcat(cmd, name);
    strcat(cmd, type);
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:12 #7
char cmd[1000];
sprintf(cmd,"%s%d%s",name,size,type);
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:13 #8
hvis du vil bruge STL string så:

stringstream ss;
ss << name << size << type;
string cmd = ss.str();
Avatar billede arne_v Ekspert
12. oktober 2005 - 13:14 #9
og nu håber jeg ikke at jeg fik forvirret for meget
Avatar billede bertelbrander Novice
12. oktober 2005 - 20:06 #10
Eller med std::string:

#include <iostream>
#include <string>
#include <sstream>
using namespace std;
template <typename T>
std::string ToString(T aValue)
{
  std::stringstream ss;
  ss << aValue;
  return ss.str();
}
int main()
{
  int size;
  int done;
  done = 0;
  char* name="file";
  char* type=".sys";
  cout << "Please enter Copy Times: \n";
  cin >> size;
  string cmd = string(name) + ToString(size) + type;

  while(done<size)
  {
      done++;
      system(cmd.c_str());
      cout << "<" << done << "Mb Completed.. \n";
  }
  cout << "Copy Complete !\n";
  system("pause");
  return 0;
}
Avatar billede quiw Nybegynder
12. oktober 2005 - 22:28 #11
Uhh .. Det virker nu .. Mange Tak.. Men Bertelbrander virker mest Optimalt .. Men Tak Arne, Lærte af dit også :)
- Men da jeg mener Bertelbrander ikke plejer at samle på Point (Ret mig hvis fejl) så må det være Arne der modtager.. ;)
- Vil du li smide et svar ?.. Hehe Tak..
Avatar billede arne_v Ekspert
12. oktober 2005 - 22:31 #12
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester