Avaleht
uus teema   vasta Tarkvara »  Programmeerimine »  PHP -> C++ (Ehk aitab keegi alguse kätte saada) märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale. Teata moderaatorile
otsing:  
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 26.01.2008 12:50:35 PHP -> C++ (Ehk aitab keegi alguse kätte saada) vasta tsitaadiga

Nimelt huvitab mind pikemat aega juba väga C/C++ keel, kuid ise üritades pole (siiani veel) endale selgeks tegemisega hakkama saand. Üks peamistest põhjustest on arvatavasti see, et ma kas ei oska kuidagi kasutada c/c++ manuali või polegi sellist olemas, nagu php puhul php.net veebileht. (kas msdn'is üldse midagi sellist on, et viskad funktsiooni otsingusse ja annab siis funktsiooni süntaksi, paar näidet ja kommentaarid, kus võib veelgi näiteid olla?) Ühesõnaga, pole ma leidnud korralikku manuali, mida oleks sama mugav kasutada, kui php oma. Ehk keegi teab paremat miskit?

Samas, üht-teist tasakesi ikka üritan ja natuke asi selgineb kogu aeg. Samas, keegi hea inimene võiks all oleva php koodi teha ümber c/c++ koodiks. Siis saaksin paar käsku veel kätte jne ja see aitaks mind arvatavasti päris palju. Siin on mu php kood siis:

<?php

$file='fail.txt';
$f=file($file);

for($a=0;$a<count($f);$a++){
   $data[$a]=explode('|', $f[$a]);
}

?>

_________________
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 99
tagasi üles
vaata kasutaja infot saada privaatsõnum
Ohohh
Kreisi kasutaja
Ohohh

liitunud: 13.09.2003




sõnum 26.01.2008 15:57:32 vasta tsitaadiga

http://www.cplusplus.com/

C++ STL'is ei ole explode taolist funktsiooni. Kopisin selle mingist foorumist.

Koodi ennast on tunduvalt rohkem, kuna PHP teeb kogu muutujate initsialiseerimise ja massiivi suuruse muutmise sinu eest ära.

c++:
  1. #include <fstream>
  2. #include <iostream>
  3. #include <vector>
  4. #include <string>
  5.  
  6.     // Kui seda rida ei pane, siis pead paljudele funktsioonidele ette kirjutama std::
  7. using namespace std;
  8.  
  9.  
  10.     // Leidsin selle funktsiooni netist. stringi klassi jaoks ei ole C++'il explode stiilis funktsiooni.
  11.     // on strtok, aga see on tavaliste char'i massiivide jaoks
  12. void Tokenize(const string& str,
  13.                       vector<string>& tokens,
  14.                       const string& delimiters = " ")
  15. {
  16.     // Skip delimiters at beginning.
  17.     string::size_type lastPos = str.find_first_not_of(delimiters, 0);
  18.     // Find first "non-delimiter".
  19.     string::size_type pos     = str.find_first_of(delimiters, lastPos);
  20.  
  21.     while (string::npos != pos || string::npos != lastPos)
  22.     {
  23.         // Found a token, add it to the vector.
  24.         tokens.push_back(str.substr(lastPos, pos - lastPos));
  25.         // Skip delimiters.  Note the "not_of"
  26.         lastPos = str.find_first_not_of(delimiters, pos);
  27.         // Find next "non-delimiter"
  28.         pos = str.find_first_of(delimiters, lastPos);
  29.     }
  30. }
  31.  
  32.  
  33.  
  34. int main() {
  35.         // muutujad for tsüklite jaoks
  36.     unsigned int i, j;
  37.         // faili nimi. Võiks olla ka char fileName[] = "fail.txt", aga et hoida ühtset joont,
  38.         // siis kasutan ka siin string'i
  39.     string fileName = "fail.txt";
  40.         // muutuja milles hoian failist loetud rida
  41.     string line;
  42.         // Vector stringi vectorist.
  43.         // Välimine vector on ridade jaoks ja sisemine eraldatud sõnade jaoks.
  44.         // (vector on põhimõtteliselt massiiv, mille suurus võib töökäigus muutuda)
  45.     vector< vector<string> > data;
  46.         // input file stream
  47.     ifstream fs;
  48.  
  49.         // Avame faili. ifstream::open tahab parameetriks tavalist chari massiivi (C stringi)
  50.     fs.open(fileName.c_str());
  51.  
  52.         // Kontrollime kas fail avanes
  53.     if (fs.is_open()) {
  54.  
  55.             // Loeme rea kaupa filist andmed
  56.         while (getline(fs, line)) {
  57.             vector<string> emty;
  58.                 // Lükkame data lõppu uue tühja rea
  59.             data.push_back(emty);
  60.                 // Täidame selle rea lammutatud stringiga
  61.             Tokenize(line, data.back(), "|");
  62.         }
  63.  
  64.             // Viisakas inimene paneb enda järel ukse kinni
  65.         fs.close();
  66.  
  67.  
  68.             // Trükime andmed ekraanile
  69.         for (i=0; i<data.size(); i++) {
  70.             for (j=0; j<data[i].size(); j++) {
  71.                 cout << data[i][j] << " ";
  72.             }
  73.             cout << endl;
  74.         }
  75.  
  76.  
  77.     } else {
  78.         cout << "Faili avamine ebaõnnestus" << endl;
  79.     }
  80.  
  81.  
  82.     return 0;
  83. }
  84.  
Kommentaarid: 6 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 6
tagasi üles
vaata kasutaja infot saada privaatsõnum
Supiplex
HV veteran
Supiplex

liitunud: 11.12.2002




sõnum 26.01.2008 18:29:15 vasta tsitaadiga

Nääd, Ohohh tegi oluliselt kiiremini valmis icon_smile.gif

Ma siis postitan enda versiooni kuna ma selle kord viitsisin valmis teha. Kood on sisult Ohohhi omaga sarnane, v.a. pisiasjad. Mul on tilluke command-line programm, millele saad faili andmetega ette anda:

chopfile.exe somedata.txt

c++:
  1. / Standard libraries
  2. #include <cstdlib>
  3. // Console I/O (cin, cout, cerr)
  4. #include <iostream>
  5. // File I/O
  6. #include <fstream>
  7. // STL string manipulation
  8. #include <string>
  9. // STL vector container
  10. #include <vector>
  11.  
  12. using namespace std;
  13.  
  14. /**
  15. * There is no native explode function in C++ or STL.
  16. * This code is modified from Alan Johnson's post to
  17. * usenet thread "explode equivalent in c++" in group comp.lang.c++
  18. */
  19. vector<string> explode(string delim, string in) {
  20.         typedef string::size_type size_type;
  21.        
  22.         const size_type delim_len = delim.length();
  23.         vector<std::string> result;
  24.        
  25.         size_type i = 0, j;
  26.         while (true)
  27.         {
  28.                 j = in.find(delim, i);
  29.                 result.push_back(in.substr(i, j-i));
  30.                 if (j == string::npos)
  31.                         break;
  32.                 i = j + delim_len;
  33.         }
  34.        
  35.         return result;
  36.        
  37. }
  38.  
  39. /**
  40. * The main() function receives the arguments given in
  41. * command line. argCount specifies the number of arguments
  42. * and args is a C-style array containing argument strings.
  43. *
  44. * When executing the program as:
  45. *      $ chopfile.exe data.txt
  46. * then arguments are passed on as if this code was executed:
  47. *      argCount = 2;
  48. *      args[0] = "chopfile.exe";
  49. *      args[1] = "data.txt"
  50. */
  51. int main(int argCount, char *args[]) {
  52.         // This is our input file
  53.         ifstream inFile;
  54.         // This is a buffer for holding current line
  55.         string line;
  56.         // Declare a 2-dimensional array of strings
  57.         vector<vector<string> > data;
  58.        
  59.         // Start work.
  60.         // User must give a file name
  61.         if (argCount == 2) {
  62.                 // Open file with given file name
  63.                 inFile.open(args[1]);
  64.                 // Check if fail open succeeded
  65.                 if (inFile.is_open()) {
  66.                         // Read the file until it End-Of-File found
  67.                         while (!inFile.eof()) {
  68.                                 // Read a line into buffer
  69.                                 getline(inFile, line);
  70.                                 // Explode the line and add it into data array
  71.                                 data.push_back(explode("|", line));
  72.                         }
  73.                         // Now we are done. Close file.
  74.                         inFile.close();
  75.                        
  76.                         // Output the chopped data
  77.                         for (int i = 0; i < data.size(); i++) {
  78.                                 for (int j = 0; j < data[i].size(); j++) {
  79.                                         if (j) {
  80.                                                 cout << ", ";
  81.                                         }
  82.                                         cout << "(" << data[i][j] << ")";
  83.                                 }
  84.                                 cout << endl;
  85.                         }
  86.                        
  87.                         // That's it folks.
  88.                         return EXIT_SUCCESS;
  89.                 }
  90.                 else {
  91.                         cerr << "Failed to open file: " << args[1] << endl;
  92.                         return EXIT_FAILURE;
  93.                 }
  94.                
  95.         }
  96.         else {
  97.                 cerr << "Missing argument: file name" << endl;
  98.                 return EXIT_FAILURE;
  99.         }
  100. }


Aga C++ käsiraamatutega on nii, et

  • Piibliks on Bjarne Stroustrup'i raamat "The C++ Programming Language". See on A ja O, aga algajale ehk veidi tummine.
  • Väga hea raamat algajale on Bruce Eckel'i "Thinking in C++", esimene osa seletab C++ keelt ja objektorienteeritust, teine osa seletab STL-i. Seda saab tasuta alla tõmmata. Otsi googlest.
  • Muidu reference'iks kõlbab suvaline veebisait, näiteks http://www.cplusplus.com/ või http://www.sgi.com/tech/stl/

_________________
The young lady had an unusual list,
Linked in part to a structural weakness.
She set no preconditions.


viimati muutis Supiplex 26.01.2008 18:42:18, muudetud 1 kord
Kommentaarid: 38 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 34
tagasi üles
vaata kasutaja infot saada privaatsõnum
jnt
HV Guru
jnt

liitunud: 10.05.2005



Autoriseeritud ID-kaardiga

sõnum 26.01.2008 18:33:40 vasta tsitaadiga

Tänud! Nüüd mingid valmis koodid ka ees, mida uurida... eks siis uurin. Veelkord tänud! icon_biggrin.gif
_________________
Seisab keldris vana 386-486-Pentium1? Räägime! Ehk saan vanakesele uue elu anda. icon_wink.gif
Vaata siia, äkki müün midagi põnevat -> https://www.osta.ee/index.php?fuseaction=listing.seller&q[seller]=jnt
Kommentaarid: 106 loe/lisa Kasutajad arvavad:  :: 2 :: 0 :: 99
tagasi üles
vaata kasutaja infot saada privaatsõnum
bond666
HV vaatleja

liitunud: 11.09.2003




sõnum 28.01.2008 13:35:06 vasta tsitaadiga

search.msdn.microsoft.com on olemas küll aga otsimine on sealt raskendatud kuna seal on c#,.net,visual basic, javascript kõik läbisegi.
standard c asju saab edukalt leida google abil kasutades teda manualina - toksid google search "man:fopen".
Kommentaarid: 2 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 2
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  Programmeerimine »  PHP -> C++ (Ehk aitab keegi alguse kätte saada)
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
sa ei või postitada uusi teemasid siia foorumisse
sa ei või vastata selle foorumi teemadele
sa ei või muuta oma postitusi selles foorumis
sa ei või kustutada oma postitusi selles foorumis
sa ei või vastata küsitlustele selles foorumis
sa ei saa lisada manuseid selles foorumis
sa võid manuseid alla laadida selles foorumis



Hinnavaatlus ei vastuta foorumis tehtud postituste eest.