Por que você acha que a maioria dos instrutores de C ++ que ensinam ciências da computação em faculdades desencorajam ou até proíbem o uso de strings para texto, em vez de exigir que os alunos usem matrizes de caracteres?
Suponho que essa metodologia tenha alguma intenção de ensinar bons hábitos de programação, mas, na minha experiência, não vejo nada de errado em usar apenas strings, e elas são significativamente mais fáceis de usar e aprender.
Respostas:
Para um estudante de CS, o professor pode desencorajar std :: string e solicitar char array, para ensinar noções básicas de array. Na minha escola, o professor nos pediu para escrever rotinas C
strlen
,strcmp
etc. , por conta própria. Não pode obter nenhum nível baixo, então este (saindo da montagem!).Usando matriz, em vez de cadeia, você pode aprender sobre gerenciamento de memória, operações de cadeia, principalmente analisar a cadeia. Ao iterar sobre a matriz, você basicamente está analisando a string, procurando espaço em branco, caracteres especiais, tokens etc.
Mas não estou recomendando array sobre string. Estou apenas dando uma razão para lidar com matrizes, na universidade.
fonte
Koenig e Moe's Accelerated C ++ e Stroustrup's Programming: Principles and Practice O uso de C ++ está usando std :: string e outros componentes da biblioteca padrão desde o início. Se bem me lembro, eles nem apresentam matrizes C para Koenig e Moe e Stroustrup faz isso muito tarde no livro (talvez até mesmo em um anexo).
Essa abordagem, qualificada como moderna , é a preferida em meus círculos. A outra abordagem, muitas vezes qualificada como histórica , segue mais de perto a evolução do C ++, mas não tira proveito do desenvolvimento "mais novo" (relativamente, eles têm 15 anos agora) e não ensina o que é praticado agora (pelo menos em projetos não sobrecarregados com muito legado), mas há 10 anos (sempre há um atraso antes de ser mainstream).
fonte
Não posso dizer nada sobre "a maioria" versus "alguns" instrutores de programação, mas posso dizer que em um currículo de CS, os primeiros cursos de programação têm dois objetivos:
Às vezes, elas estão em desacordo e professores diferentes farão trocas diferentes.
fonte
Acho que depende do que você está tentando ensinar nesse curso ... "Ciência da Computação" é uma definição um tanto vaga.
Se o curso for sobre Algoritmos e Estruturas de Dados, ensinar aos alunos não
std::string
tem absolutamente nenhum valor didático. Usarchar
matrizes como uma introdução às matrizes e operações sobre elas, no entanto, é bastante legítimo.Se o curso é sobre design de objetos, acho que
std::string
tem algum valor como exemplo de um tipo de dados abstrato.Se o curso é apenas sobre as melhores práticas em C ++, então eu me preocuparia com o tipo de faculdade em que está e como eles projetam o currículo de Ciência da Computação.
fonte
Eu acho que você não entendeu o objetivo real do seu curso, pois um bom C ++ (basicamente) usa as abstrações fornecidas pela biblioteca padrão (por que você deseja reinventar a roda?).
Há até uma citação de Stroustrup dizendo "mantenha matrizes fora das interfaces" em seu FAQ, onde ele fornece algumas dicas sobre como escrever código seguro. Portanto, duvido que você realmente seja instruído a não usá-los, porque eles são ruins, mas a aprender alguns fundamentos de como as coisas funcionam, para que você possa usar mais tarde esse entendimento se realmente precisar de otimização ou outro trabalho, para o qual deseja precisa do básico real.
fonte
Em alguns casos, as cordas são boas em outras, elas não são iguais para char
/ ** Exemplo 1 de uso de string, neste caso, string é cortado por Spaces na saída, se escrevermos del test.txt, a saída será Linha 1 del Linha 2 test.txt, o que não é bom ** /
/ ** Exemplo 2 do mesmo programa, mas passamos a entrada em um caractere com um campo de 80 a saída para o mesmo cmd que o primeiro exemplo será del test.txt na mesma linha que é boa ** /
Strings são objetos que representam seqüências de caracteres.
A classe de sequência padrão fornece suporte para esses objetos com uma interface semelhante à de um contêiner padrão de bytes, mas adicionando recursos projetados especificamente para operar com sequências de caracteres de byte único.
A classe string é uma instanciação do modelo da classe basic_string que usa char (ou seja, bytes) como seu tipo de caractere, com seus char_traits e tipos de alocadores padrão (consulte basic_string para obter mais informações sobre o modelo).
Observe que esta classe manipula bytes independentemente da codificação usada: Se usada para manipular seqüências de caracteres de vários bytes ou de comprimento variável (como UTF-8), todos os membros desta classe (como comprimento ou tamanho), bem como seus iteradores, ainda operará em termos de bytes (não caracteres reais codificados). Referência -C ++ http://www.cplusplus.com/reference/string/string/ [1]:
eu sugiro olhar para:
fonte