Limitação "cin" do Turbo C: Lendo apenas a primeira palavra
No Turbo C , o operador de entrada "cin" tem um limitação ao lidar com matrizes de caracteres. Especificamente, ele só lê até encontrar um caractere de espaço em branco (por exemplo, espaço ou nova linha). Isso pode levar a um comportamento inesperado ao tentar ler entradas de várias palavras.
Considere o seguinte código Turbo C:
#include
class String {
char str[100];
public:
void input() {
cout > str;
}
void display() {
cout Se você executar esse código e inserir a entrada "Steve Hawking", esperaria que a saída exibisse a string inteira. Porém, devido à limitação de "cin", apenas "Steve" é exibido, pois "cin" para de ler no primeiro caractere de espaço em branco (espaço).
Superando a limitação
Para resolver essa limitação, você pode usar métodos alternativos para ler matrizes de caracteres no Turbo C:
- cin.getline(str, sizeof str);
This O método lê uma linha inteira de entrada, incluindo caracteres de espaço em branco, na matriz de caracteres especificada. - std::getline(cin, str);
Se você tiver acesso ao padrão biblioteca, você pode usar este método para ler uma linha inteira em um objeto string, o que oferece mais flexibilidade. - Implemente sua própria classe de string:
Você pode definir sua própria classe de string que lida com entrada e saída com mais eficiência.
Recomendação
A abordagem recomendada hoje em dia é usar compiladores C modernos e a biblioteca padrão. Isso fornece um tratamento de entrada mais confiável e eficiente, incluindo a capacidade de ler linhas inteiras de entrada.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3