Zdravím,
mám menší dotaz, chtěl bych se zeptat, jak zalomit řádek s textem po 30 znacích? Pracuju ve VS2010 C++
Předem díky za rady, tipy.
Fórum › C / C++
Jak zalomit řádek?
![](img/forum_vlakno_help_vyreseno.png)
jsem začátečník, takže tam určitě budou chyby, tak berte zřetel :D
#include <iostream>
#include <string>
using namespace std;
int main()
{
const char *Text = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisquelacinia placerat pharetra. Fusce quis mi sapien.";
cout << " ";
return 0;
}
//btw. ma tam byt odsazeni o 3 znaky, tak proto cout " "//
To S2K :
Ptáš se na std::endl nebo \n ? Nebo jsem to špatně pochopil?
Edit:
Nebo se ptáš na to, jak projít ten řetězec a pozalamovat jej?
V tom případě bude nejjednodušší použít místo *char třídu String a za každý 30tý znak vložit metodou insert znak \n. Pokud ti jde jenom o výstup pak můžeš použít metodu sbstr a postupně ukusovat 30 znakové kousky a ty vypisovat. std::cout<<kousek<<std::endl;
Edit2:
A nebo úplně jednoduše:
int i = 0;
while (text[i] != '\0') {
cout<<text[i];
i++;
if (i == 30) cout<<endl;
}
Edit3: Opravena chybka. Snad je to správně. V c++ jsem už chvíli nedělal. :)
Petr.Satka>Díky moc, zalomí se mi to po 30 znacích, ale musím ještě popřemýšlet, jak to udělat, aby se každý řádek zalomil po 30 řádcích a ne jen první, ale i tak díky moc, kdybys tu náhodou šel a není to na dlouho, jak to udělat, aby se i další řádky zalamovaly, tak m ito tu napiš. Ještě jednou díky Moc Mirek :smile1: :smile1:
Ještě mě napadlo, jestli někdo neporadí, jak ošetřit můj program, aby mi nedělil slova. Příklad: Na řádku bude text a u 28 znaku se objeví slovo, které má 6 písmen, tak se to slovo nerozdělí, ale automatick ho šoupne na další řádek? Nenapdá někoho?
to uz jedine hledanim
neco ve stylu: zkusit posledni znak a znak za nim.. pokud je znak za nim mezera tak vypsat a zacit za tou mezerou ..
pokud je tam pismeno tak postupne zmensovat retezec dokud nenarazis na neco co neni znak.. samozrejme musis hlidat delku retezce.. aby ses nedostal za konec
To S2K :
A nebo si udělat metodu, která bude z řetězce ukusovat jednotlivá slova a pak v cyklu tuto metodu volat a sčítat délky slov (před vypsáním), jakmile délka přesáhne 30, tak zalomit a vypsat na další řádek. Určitě to není nejefektivnější způsob, ale pokud se nejedná o příliš dlouhé texty, tak to nevadí a je poměrně přehledný a přímočarý.
pseudokód:
(Je možné, že jsem něco přehlédl, takže to ber jen jako nástin funkce. A musíš si ošetřit problém se slovy delšími než 30 znaků.)
int delka=0;
while ((slovo = getNextWord()) != null) {
delka += slovo.getLenght()+1;//+mezera za slovem
if (delka >= 30) {
cout<<endl;
delka = slovo.getLenght()+1;//slovo započítáme do dalšího řádku
}
cout<<slovo<<" ";
}
![](img/forum_nove_psp_new.png)
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
![](/img/smile/1.gif)
![](/img/smile/2.gif)
![](/img/smile/3.gif)
![](/img/smile/4.gif)
![](/img/smile/5.gif)
![](/img/smile/6.gif)
![](/img/smile/7.gif)
![](/img/smile/8.gif)
![](/img/smile/9.gif)
![](/img/smile/10.gif)
![](/img/smile/11.gif)
![](/img/smile/12.gif)
![](/img/smile/13.gif)
![](/img/smile/14.gif)
![](/img/smile/15.gif)
![](/img/smile/16.gif)
![](/img/smile/17.gif)
![](/img/smile/18.gif)
![](/img/smile/19.gif)
![](/img/smile/20.gif)
![](/img/smile/21.gif)
![](/img/smile/22.gif)
![](/img/smile/23.gif)
![](/img/smile/24.gif)
![](/img/smile/25.gif)
![](/img/smile/26.gif)
![](/img/smile/27.gif)
![](/img/smile/28.gif)
![](/img/smile/29.gif)
![](/img/smile/30.gif)
![](/img/smile/31.gif)
![](/img/smile/32.gif)
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Jak zalomit řádek v textovém souboru — založil lukinpark
C++- jak na prikazovy radek — založil klaveska
Jak přepsat řádek v textovém souboru? — založil bear.king
Jak reprezentovat (a ukládat) vrácený řádek dotazu SQLite databáze — založil Bunsen Burner
QT příkazový řádek — založil Fic
Moderátoři diskuze