Upravení textu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Upravení textu – C / C++ – Fórum – Programujte.comUpravení textu – C / C++ – Fórum – Programujte.com

 

ingiraxo+15
Grafoman
2. 12. 2012   #1
-
0
-

Čau, mám menší problém s nahrazením textu. Potřebuju ve vektoru stringů najít části s tečkou kde za tečkou není mezera a tam přidat mezeru + další písmeno aby abylo velké

např. "jedno.slovo" upravit na "jedno. Slovo"

zatím to mám takto, ale ten while se mi provede vždy min. 1 a potom mi nejde upravit ten text, zkoušel jsem přes replace u stringu, jako přes iter. it->replace(line, line + 3, 2, ". "), ale nejde :/ 

vector<string>::iterator it = lines.begin();

for (; it != lines.end(); it++)
{
    char* line = (char*)it->c_str();
		
    while (*line != '�')
    {
        line = adjacent_find(line, line + it->size(), predicate_dot);
        line++;
    }
}

jo a predicate_dot mám takto 

return (c1 == '.' && c2 != ' ');

Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Luckin
~ Anonymní uživatel
57 příspěvků
2. 12. 2012   #2
-
0
-

#1 ingiraxo
Já sem to upravení řetězce vyřešil takhle:

#include <iostream>
#include "String.hpp"
using namespace std;
using namespace Basics;

int main()
{
  String str = "jedno.slovo";
  
  for(int i=0;i<str.get_length();i++)
    if(str[i] == '.')
    {
      String temp;
      temp.reserve(strlen((const char*)&str[i+1]));
      strcpy((char*)temp, (const char*)&str[i+1]);
      str[i+1] = '\0';
      if((int)temp[0] >= 97 && (int)temp[0] <= 122)
        temp[0] -= 32;
      str += (String)" " + temp;
    }
  
  cout<<str;
  getchar();
}

...ale použil jsem k tomu svojí vlastní třídu String. Kdybys jí chtěl, tak si ji můžeš stáhnout tady:

http://leteckaposta.cz/193550066

Nahlásit jako SPAM
IP: 89.103.156.–
Luckin
~ Anonymní uživatel
57 příspěvků
2. 12. 2012   #3
-
0
-

#1 ingiraxo
Mimochodem, pokud používáš  Visual studio tak musíš místo String psát STRING nebo Basics::String.

Nahlásit jako SPAM
IP: 89.103.156.–
ingiraxo+15
Grafoman
3. 12. 2012   #4
-
0
-

Luckin: dík, ale tvoje řešení mi přijde zbytečně komplikovaný, když string samotnej je dynamickej a vůbec nevim proč si dělal vlastní String O_o

už jsem to vyřešil takto

    vector<string>::iterator it = lines.begin();

    for (; it != lines.end(); it++)
    {
        string::iterator sit = it->begin();
        
        while (true)
        {
            sit = adjacent_find(sit, it->end(), predicate_dot);
            
            if (sit != it->end())
            {
                it->insert(sit + 1, ' ');

                if (*(sit + 2) >= 'a' && *(sit + 2) <= 'z')
                    it->replace(sit + 2, sit + 3, toString(*(sit + 2) - 32));

                sit++;
            }
            else break;
        }
    }
Nahlásit jako SPAM
IP: 213.168.183.–
Moje aplikace: http://ophite.cz
Tutoriály na: C#
Luckin
~ Anonymní uživatel
57 příspěvků
3. 12. 2012   #5
-
0
-

#4 ingiraxo
ten String sem dělal už dávno a tak průběžně do něj přidávam co potřebuju, mam takových tříd víc, tvořim si takovou vlastní knihovnu. Používat na tyhle věci standradní knihovny mě nebaví, tak bych se nic nenaučil a takhe si aspoň můžu tu třídu vytvořit podle toho jak to mě vyhovuje. Řekl bych že psaním podobných knihoven se člověk nejlíp naučí jak v C++ fungujou třídy a když už jsem to napsal tak proč to i nepoužívat když to funguje.

Nahlásit jako SPAM
IP: 89.103.156.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 71 hostů

Podobná vlákna

C++,upraveni — založil Mates

Upravení pluginu do hry — založil Seuss

Upravení dat hry — založil Agnares

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý