Ir ao conteúdo

Posts recomendados

Postado

Pegando esse pedaço de código como exemplo:

 

 

#include <iostream>

#include <string>

#include <vector>

#include <algorithm>

#include <cmath>

#include <locale.h>

 

using namespace std;

inline void keep_window_open() {char ch; cin>>ch;}

 

int main (){

 

 

setlocale(LC_ALL, "Portuguese");

 

vector <string> palavras;

string temp;

 

while (cin >> temp) palavras.push_back(temp);

 

...

 

Como faço para interromper o fluxo de entrada (cin >> temp)? Li que deve-se pressionar Control + z. Fiz isso, mas não deu certo. Só tenho conseguido de um jeito: pressionando control + z + enter, um atrás do outro, repetidas vezes. O problema disso é que às vezes consigo interromper o fluxo de entrada na primeira vez que digito essa sequência, mas às vezes não. Quando não consigo na primeira vez (maioria das vezes) acaba acontecendo que os caracteres '^Z' são digitados, mudando o resultado final do programa.

 

Alguém sabe um jeito eficaz de interromper o fluxo de entrada?

 

OBS: meu sistema operacional é o Windows 8

OBS-2: uso o Dev-C++ 5.11

 

Desde já agradeço ;D

Postado

Explica melhor o que você quer fazer, você quer pular um comando de entrada que você colocou lá? se você não queria executar o comando porque colocou ele la?

Se você quer executar a entrada somente em alguns casos raros da pra usar um if.

Postado

Da forma que você fez, o critério de parada e EOF. Se quiser sair do loop, sem terminar o programa, determine uma condição para chamar a instrução break

Postado

CiroboyBR olliver.soul: quero ler palavras (strings) e, quando eu quiser, finalizar o fluxo de entrada. cin >> temp é verdadeiro se um valor foi lido corretamente e falso em caso contrário. O laço while irá ler todos os strings (logo, todos os caracteres) que fornecemos. Então eu vou inserindo strings, como, por exemplo, 'banana pera manga', etc. O que quero é saber um comando específico que termine com o laço while (que termine com o fluxo de entrada). Se a variável que eu armazenasse a leitura fosse um double, em vez de uma string, terminar o fluxo de entrada (finalizar o while, nesse caso) seria fácil, pois para cin >> temp ser falso bastaria eu digitar um valor incorreto (que não fosse ponto flutuante), como 'k' por exemplo. O problema é que na string, '2', 'k' ou qualquer caractere que seja é aceito. Ou seja, deve haver uma comando específico para finalizar o fluxo de entrada. Mas não sei qual é. Isso que eu queria saber. Sei que posso colocar para finalizar o fluxo quando eu digitar um caractere específico (dentro de um if), como '|', por exemplo. Mas não quero isso, senão o usuário não iria poder digitar esse caractere. Sei que deve haver esse comando específico pois li a respeito. O livro 'princípios e prática de programação com c++'', do bjarne stroustrup, diz que é o control + z. Tentei, mas não funciona.

 

Segue o resto do código do programa que eu coloquei acima:

 

//Este  programa lê palavras, as ordena e emite uma saída para palavras que não gosta (previamente definidas)

#include <iostream>

#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <locale.h>

using namespace std;
inline void keep_window_open() {char ch; cin>>ch;}

int main (){
    
    
    setlocale(LC_ALL, "Portuguese");
    
    string desgosta= "renga";
    string desgosta2= "olaa";
    vector <string> palavras;
    string temp;
    
    while (cin >> temp) palavras.push_back(temp);
    
    sort (palavras.begin(), palavras.end());
    
    for (int i= 0; i < palavras.size(); ++i){
    
    if (palavras== desgosta || palavras == desgosta2){
        cout << "\nRUÍDO";
    }else if (i== 0 || palavras [i-1] != palavras){
        cout << "\n"<< palavras;
    }
    }
}        
 

 

Claro, esse é só um exemplo de programa, há vários outros que preciso saber como finalizar o fluxo de entrada.

 

Postado

@Jardel Nunes Veja se isso te ajuda:

 

#include <iostream>
#include <string>
#include <cstdlib>


using namespace std;

int main () {
    string s;

    while (cin >> s) {
      if (s[0] >= '0' && s[0] <= '9') {
        cout << "A frase comeca com numero!" << endl;
        system("pause");
        break;
      }
    }

}

 

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!