Solved

how to get the extension in ".txt" with a date format time?

Posted on 2008-09-29
13
181 Views
Last Modified: 2010-04-01
Hello EE,
i have some problem with this code
how to get "myfile-somerandomnumberhere-Mon_sep_29_21:59:01_2008.txt"?
std::stringstream ssFilename; //nuove variabile per uploaddare il file

        time( &aclock );                 /* Get time in seconds */

 

        newtime = localtime( &aclock );  /* Convert time to struct */

                                         /* tm form */

 

        ssFilename

        << asctime(newtime)

        << "-"

        

        << "myfile-"

        << acUserName// add user name

        << "-"

        << std::setw(5)

        << std::setfill('0')

        << (rand() % 100000)

        << ".txt";
 

        std::string const &  sFilename = ssFilename.str();

Open in new window

0
Comment
Question by:kagami01
  • 5
  • 5
  • 3
13 Comments
 
LVL 11

Accepted Solution

by:
DeepuAbrahamK earned 150 total points
ID: 22602546
You need to rearranage the code

   // Seed the random-number generator with the current time so that

   // the numbers will be different every time we run.

   srand( (unsigned)time( NULL ) );
 

	ssFilename

		<< "myfile-"

		<< (rand() % 100000)

		<< "-"

		<< "acUserName"// add user name

		<< "-"

        << asctime(newtime)

        << ".txt";

	std::string const &  sFilename = ssFilename.str();

	cout << sFilename.c_str();

Open in new window

0
 
LVL 53

Expert Comment

by:Infinity08
ID: 22603502
You probably also want to replace the spaces in the filename with underscores after constructing it ...
0
 

Author Comment

by:kagami01
ID: 22604086
the code abouve here doesn't uploads the file anymore...
0
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 22604230
Try this code...


   // Seed the random-number generator with the current time so that

   // the numbers will be different every time we run.

   srand( (unsigned)time( NULL ) );
 

   	string str_newtime = asctime(newtime) ;
 

	string str_old = " ";

	string str_new = "_";

  

	 string str_time = str_newtime;

     int pos1 = 0; 

     int pos2 = 0;

     while ((pos1 = str_time.find(str_old, pos2)) != string::npos)

     {

           str_time.replace(pos1, str_old.length(), str_new);

           pos2 = pos1+1;

     }
 

	ssFilename

		<< myfile-

		<< (rand() % 100000)

		<< "-"

		<< "acUserName"// add user name

		<< "-"

        << str_time

        << ".txt";
 
 

	

	std::string const &  sFilename = ssFilename.str();
 

	

	cout << sFilename.c_str();

		cout <<"\n";

Open in new window

0
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 22604243
Oops typo....sorry please read this as

      ssFilename
            << myfile<<"-"  //------------------------>Changed here
            << (rand() % 100000)
            << "-"
            << "acUserName"// add user name
            << "-"
        << str_time
        << ".txt";
0
 

Author Comment

by:kagami01
ID: 22604266
i meant it upload the file but the extension is not ".txt"
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 53

Expert Comment

by:Infinity08
ID: 22604295
This version of replace is probably a better fit for replacing all spaces with underscores (in one call) :

        http://www.cplusplus.com/reference/algorithm/replace.html

;)
0
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 22605214
What is the extn it shows? is there any other "." in the string other than ".txt"
0
 

Author Comment

by:kagami01
ID: 22605751
i got this file name extension
"myfile-user1-1222785145Tue Sep 30 16:32:25 2008"
with no .txt extension file

i put here my code again

ps
by the way if i go on my ftp web space i can read the file but i cannot delete it modify it and so on cause it contains some strange symbol
DWORD WINAPI ftp_upload(LPVOID lpParam)

{ 

        struct tm *newtime;

        time_t aclock;

        

        char acUserName[UNLEN + 1];

        DWORD dwNameLen = UNLEN + 1;

        GetUserName(acUserName,&dwNameLen);

       

            

 /////////////////////////////////////////////////////////////////////

 

    //this part of code is cool!!!       

     

/////////////////////////////////////////////////////////////////////	

      

      

    

    HINTERNET hCon, sFtp;

    

    

    while(true)

    {

             

        std::stringstream ssFilename; / 

        time( &aclock );                 /* Get time in seconds */

 

        newtime = localtime( &aclock );  /* Convert time to struct */

                                         /* tm form */

 

        ssFilename

        

        << "myfile-"

        << acUserName // add user name

        << "-"

        << time(NULL)

        << asctime(newtime)

        << "-"

        << std::setw(5)

        << std::setfill('0')

        << (rand() % 100000)

        << ".txt";

                 

        string const sFilename = ssFilename.str();

Open in new window

0
 

Author Comment

by:kagami01
ID: 22605792
i got the ".txt" extension cnhanging my code like this...see below

and  now my file is "lmyfile-user1-122278538700041.txt""

i think the problem is  the time format

DWORD WINAPI ftp_upload(LPVOID lpParam)

{ 

        struct tm *newtime;

        time_t aclock;

        

        char acUserName[UNLEN + 1];

        DWORD dwNameLen = UNLEN + 1;

        GetUserName(acUserName,&dwNameLen);

       

            

 /////////////////////////////////////////////////////////////////////

 

    //this part of code is cool!!!       

     

/////////////////////////////////////////////////////////////////////	

      

      

    

    HINTERNET hCon, sFtp;

    

    

    while(true)

    {

             

        std::stringstream ssFilename;

        time( &aclock );                 /* Get time in seconds */

 

        newtime = localtime( &aclock );  /* Convert time to struct */

                                         /* tm form */

 

        ssFilename

        

        << "myfile-"

        << acUserName // add user name

        << "-"

        << time(NULL)

        << std::setw(5)

        << std::setfill('0')

        << (rand() % 100000)

        << ".txt";

                

 

        string const sFilename = ssFilename.str()

Open in new window

0
 
LVL 53

Expert Comment

by:Infinity08
ID: 22612470
>> i think the problem is  the time format

What do you mean ?

Btw, don't you want to replace the spaces with underscores ?
0
 

Author Comment

by:kagami01
ID: 22612765
yeah because my time format was HH:MM:SS YYYY MM DD
so in ftp webspace the ":" and the " " character are not accepted.
for example i have uploaded the follw file "myfile-12:01:00 2008 10 01"
if i want to change this file name direclty from my ftp webspace ,i got an error as follows "you cannot change the name of this file because the format is not accepted".
Anyway i have already solved the problem.Please see my other asked question.
0
 
LVL 11

Expert Comment

by:DeepuAbrahamK
ID: 22613137
Did any of our answers/suggestions helped you in soulving your problem? If yes, I would ask you to close this by assiging points ..Thanks,
DeepuAbrahamK
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

When writing generic code, using template meta-programming techniques, it is sometimes useful to know if a type is convertible to another type. A good example of when this might be is if you are writing diagnostic instrumentation for code to generat…
Basic understanding on "OO- Object Orientation" is needed for designing a logical solution to solve a problem. Basic OOAD is a prerequisite for a coder to ensure that they follow the basic design of OO. This would help developers to understand the b…
The goal of the tutorial is to teach the user how to use functions in C++. The video will cover how to define functions, how to call functions and how to create functions prototypes. Microsoft Visual C++ 2010 Express will be used as a text editor an…
The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…

932 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now