| | |
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Autor | Správa |
---|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal vama: 23.04.2013 12:30 | |
|
Zdravim, chcel by som sa spytat ako sa da v C++ najefektivnejsie formatovat vstup. Mam totiz subor v ktorom su slova a potreboval by som jednotlivo poodelovat tieto slova a zapisat ich do pola.
V C sa to riesilo cez fscanf() kde som si priamo mohol naformatovat tento vstup, ale chcel by som vediet v C++ ako sa to da najlepsie riesit. Ci cez metodu inser, copy, find ... alebo je nejaky lepsi sposob?
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.04.2013 15:03 | |
|
Ak ide len o slová, tak sa to dá cez funkciu getline - buď máš každé slovo v riadku, to je potom ľahlé, alebo ich mአv jednom riadku a funkcii zmeníš delimiter na medzeru (napr) Príp. tam máš nejaký text, takže zmeníš delimiter na medzeru a špeciálne poošetruješ oddelenie slov tam, kde sa láme riadok. Tak pekne, ako fscanf, sa to podľa mňa v C++ nedá - môžem sa ale mýliť, ja som aj v C++ používal vždy fscanf, pretože je rýchlejší a pohodlnejší než streamy v C++.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 23.04.2013 20:02 | |
|
okay, skusim to. Ide len o slova , ale dve su v jednom riadku, takze skusim nastavit ten delimiter na medzeru. Dost casto sa kombinuju v C++ kniznice z C, ale to asi nie je najlepsii napad stare kniznice pouzivat ..
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
Registrovaný: 17.07.11 Prihlásený: 29.12.20 Príspevky: 1516 Témy: 3 | Napísal BX: 23.04.2013 20:23 | |
|
To je diskutabilné. Cčkovské funkcie (väčšina) boli do C++ zavedené a inkludujú sa tak, že napíšeš názov knižnice bez .h a pred to ešte c. Napr. v tomto prípade, ak dáš do programu #include <cstdio>; tak sa nedá povedať, že by si používal "starú Cčkovsku" knižnicu.
_________________ Na súkromné správy týkajúce sa problémov, ktoré sa riešia vo fóre, neodpovedám! |
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 23.04.2013 23:05 | |
|
aha tak v tom pripade ano, ja som myslel .h subory ..
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
Registrovaný: 14.03.11 Prihlásený: 02.08.23 Príspevky: 814 Témy: 23 Bydlisko: Bratislava |
Kód: #define DELIM (wstring)L" " // delimiter //...
wstring sInLine; // nacitany riadok //...
wstring sWord, sTail; while ( stringSplit( sInLine, DELIM, & sWord, & sTail ) ) { sInLine = sTail; // sWord <- slovo ------------------------------------------- } if ( sInLine.length() > 0 ) { // sInLine <- posledné slovo ------------------------------- }
/////////// bool stringSplit( wstring sStr, wstring sDel, wstring * s1st, wstring * s2nd ) {
if ( sStr.empty() ) return false; if ( sStr.find( sDel ) != wstring::npos ) { size_t i = sStr.find( sDel ); *s1st = sStr.substr( 0, i ); *s2nd = sStr.substr( i+sDel.length() ); return true; } else { *s1st = sStr; *s2nd = L'\0'; return false; } }
Ale v c++/cli je to lahšie.
|
|
Registrovaný: 14.03.11 Prihlásený: 02.08.23 Príspevky: 814 Témy: 23 Bydlisko: Bratislava |
Kód: String ^ sCap = gcnew String( L" | môjProgram | testovanie na súbore | " );
FileStream ^ fsIn = gcnew FileStream( L"./input.txt", FileMode::Open ); if ( fsIn == nullptr ) { String ^ sMsg = L"Nenašiel som vstupný súbor."; #ifdef CONSOLE #else MessageBox::Show( sMsg, sCap, MessageBoxButtons::OK, MessageBoxIcon::Error ); #endif return; } Encoding^ w1250 = Encoding::GetEncoding( 1250 ); StreamReader^ sr = gcnew StreamReader( fsIn, w1250 );
String ^ sLine; for(;;) { sLine = sr->ReadLine(); if ( sLine == nullptr ) break; // EOF if ( sLine->Length == 0 ) { // empty line continue; } // ---------------------------------- array < String ^ > ^ sWords; // do tohoto bude separovať array < Char > ^ aSep = gcnew array<Char>{ ' ' }; // tu môžu byť rôzne separátory sWords = sLine->Split( aSep ); // <==
int iWord = sWords->Length; // počet slov // ----------------------------------
}
|
|
Registrovaný: 20.11.09 Prihlásený: 02.11.14 Príspevky: 241 Témy: 58 Bydlisko: Myjava | Napísal autor témy vama: 27.04.2013 23:31 | |
|
Uz som to vyriesil, cisto len cez funkciu Kód: subor >> slovo_premenna nacitavam dane slovo, kazde je v novom stringu.
_________________ "Digitálna technika pozostáva len z 0 a 1, ktoré sú v správny čas na správnom mieste." M. Valášek |
|
| Stránka: 1 z 1
| [ Príspevkov: 8 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| C, problem s osetrenim vstupu z klavesnice - char v Assembler, C, C++, Pascal, Java | 5 | 523 | 05.12.2011 14:07 t-pack25 | | c++ formatovanie textu v Assembler, C, C++, Pascal, Java | 7 | 635 | 18.11.2010 15:07 masloslayer | | C-Formátovanie Výstupu (diakritika) v Assembler, C, C++, Pascal, Java | 8 | 781 | 30.03.2014 16:51 chrono | | c++ citanie zo suboru v Assembler, C, C++, Pascal, Java | 2 | 1986 | 24.09.2012 20:08 S1RuP | | C formatované čítanie zo súboru v Assembler, C, C++, Pascal, Java | 13 | 849 | 06.05.2012 10:46 aktyX | | zapisovanie do suboru v C# v Technológia .NET | 1 | 574 | 19.05.2013 21:41 walther | | Štruktúra, čítanie zo súboru [C] v Assembler, C, C++, Pascal, Java | 2 | 434 | 18.04.2015 9:26 ado130 | | [C] Výpis zo súboru do pola v Assembler, C, C++, Pascal, Java | 2 | 440 | 05.11.2012 20:53 ado130 | | c++ načítavanie z textového súboru atď.. v Assembler, C, C++, Pascal, Java | 0 | 612 | 30.12.2011 17:03 head0r | | C++ kombinatorika/zapis do txt suboru v Assembler, C, C++, Pascal, Java | 2 | 1178 | 13.04.2011 22:46 blabla630 | | Vypocet priemeru v C zo suboru v Assembler, C, C++, Pascal, Java | 10 | 1396 | 16.11.2009 10:11 juho | | Problem s vypisom zo suboru C v Assembler, C, C++, Pascal, Java | 4 | 357 | 01.04.2012 12:47 gaspa10 | | nacitanie obsahu suboru do pola v C v Assembler, C, C++, Pascal, Java | 5 | 2137 | 28.04.2011 10:39 Fico | | [C]funkcie, nacitanie a porovnanie zo suboru v Assembler, C, C++, Pascal, Java | 6 | 1299 | 31.03.2015 17:47 dany2281995 | | C# čítanie jedného riadka z textového súboru v Assembler, C, C++, Pascal, Java | 4 | 516 | 27.06.2014 14:08 walther | | programovanie v C (nacitavanie matic zo suboru) v Assembler, C, C++, Pascal, Java | 8 | 345 | 03.11.2013 18:06 Rioner |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|