DetailPage-MSS-KB

Base de Dados de Conhecimento

Artigo: 154419 - Última revisão: quarta-feira, 19 de Março de 2008 - Revisão: 5.0

 

Nesta página

Sumário

Este artigo apresenta uma lista de Perguntas mais frequentes (FAQ, Frequently Asked Questions) sobre as bibliotecas Standard C++ e as respostas a essas perguntas. Para obter informações adicionais sobre as bibliotecas Standard de C++, consulte a especificação de padrão ANSII e MSDN Library.

Mais Informação

Perguntas mais frequentes bibliotecas C++ padrão

Q1: o que a biblioteca Standard C++ contêm?

A1: A biblioteca Standard C++ fornece uma estrutura extensível e contém componentes para suporte de idioma, diagnóstico, utilitários gerais, cadeias, regiões, biblioteca de modelos padrão (contentores, os iteradores, algoritmos e valores numéricos) e entrada/saída.

A biblioteca Standard C++ pode ser dividida nas seguintes categorias:
  1. Componentes de modelo de biblioteca (STL) padrão fornecem um C++ programa com acesso a um subconjunto das estruturas de dados e algoritmos mais amplamente utilizados. STL cabeçalhos podem ser agrupados em três principais conceitos organização:
    • contentores: classes de modelo que suportam a formas comuns de organizar dados, como, por exemplo, <vector>, <list>, <deque>, <stack>, <queue> <set> e <map>.
    • algoritmos: funções de modelo para efectuar operações comuns em sequências de objectos, tais como <functional>, <algorithm> e <numeric>.
    • Os iteradores: a colar cola algoritmos e contentores em conjunto, como, por exemplo, <utility>, <iterator> e <memory>.
  2. Entrada/saída inclui componentes para reencaminhar as declarações de iostreams (<iosfwd>) iostreams predefinidas objectos (<iostream>), as classes base iostreams (<ios>), transmissão em sequência manipulators de colocação na memória intermédia (<streambuf>) e sequência de formatação (<iosmanip>, <istream>, <ostream>), cadeia sequências (<sstream>) e transmissões em sequência de ficheiros (<fstream>).
  3. Outros cabeçalhos Standard C++ incluem:
    • suporte de idioma: componentes para definições de tipo comuns utilizadas na biblioteca (<cstddef>), as características de tipos predefinidos (<limits>, <cfloat>, <climits>), funções de suporte de início e fim de um programa C++ (<cstdlib>), suporte para gestão de memória dinâmica (<new>), suporte para identificação de tipo dinâmico (<typeinfo>), suporte para processamento de excepções (<exception>) e outro suporte de tempo de execução (<cstdarg>, <ctime>, <csetlmp>, <csignal>).
    • Diagnósticos: componentes por fornecer informações sobre vários tipos de excepcionais condições (<stdexcept>), documentação de declarações de programa (<cassert>) e uma variável global para códigos de números de erro (<cerrno>).
    • cadeias: <string> componentes para classes de cadeia (<cadeia>) e utilitários de sequência terminada por carácter nulo (<cctype>, <cwctype>, <cwchar>).
    • localização: componentes que podem utilizar programas C++ para encapsular culturais diferenças. A funcionalidade de região inclui suporte de internacionalização para agrupamento de classificação e cadeia de caracteres, numéricos, monetários e formatação de data/hora e analisar e obtenção de mensagens (<locale>, <clocale>).


Q2: o que é a diferença entre biblioteca de tempo de execução C e biblioteca Standard C++? As bibliotecas serão a biblioteca runtime do compilador opções tais como /ML /MT , /MD , / MLd , / MTd , e / MDd incluem?

A2: Visual C++ 5.0 e posterior incluem as seguintes bibliotecas juntamente com as bibliotecas Microsoft Foundation Classes (MFC):
  • Biblioteca de tempo de execução C básica
  • Biblioteca de C++ padrão
Reduzir esta tabelaExpandir esta tabela
Biblioteca de tipos e parâmetros de compilador relacionadosBiblioteca de tempo de execução C básica / biblioteca Standard C++
Single-threaded (/ ML)LIBC.LIB / LIBCP.LIB
Depuração Single-threaded (/ MLd)LIBCD.LIB / LIBCPD.LIB
Multithread (/ MT)LIBCMT.LIB / LIBCPMT.LIB
Depuração multithreaded (/ MTd)LIBCMTD.LIB / LIBCPMTD.LIB
DLL de multithread (/ MD)MSVCRT.LIB / MSVCPRT.LIB
Depurar /DLL multithreaded (MDd)MSVCRTD.LIB / MSVCPRTD.LIB
Nota As opções de compilador de biblioteca /MLd para bibliotecas estáticas single-threaded e /ML foram removidas no Visual C++ 2005 e nas versões posteriores do Visual C++.

Nota MSVCPRT.lib e MSVCPRTD.lib são bibliotecas estáticas e fazer não têm qualquer bibliotecas de ligação dinâmica (DLL) directamente relacionado com-los. Estas bibliotecas dependem também MSVCRT.lib e MSVCRTD.lib, respectivamente. Se tiver quaisquer aplicações que utilizem MSVCPRT.lib ou MSVCPRTD.lib e utilizar a opção "Ignorar predefinido Library" ( / NOD ou NODEFAULTLIB), deve ligar MSVCPRT.lib (ou MSVCPRTD.lib) e MSVCRT.lib (ou MSVCRTD.lib) com a aplicação. Caso contrário, obterá linker erros (LNK2001: não resolvidos externos MSVCPRT.lib ou MSVCPRTD.lib) quando ligar a aplicação.) Consoante os cabeçalhos que utilize no código, uma biblioteca da biblioteca Standard C++ também pode ser ligada.

O ficheiro de cabeçalho <use_ansi.h> contém instruções # pragma que forçar a biblioteca Standard C++ ser ligados. Todos os cabeçalhos Standard C++ incluem <use_ansi.h>: Se incluir qualquer cabeçalho de C++ padrão na sua aplicação, a biblioteca Standard C++ será ligada por predefinição.

Cabeçalhos de C++ padrão

Reduzir esta tabelaExpandir esta tabela
ALGORITMO BITSET COMPLEXO DEQUE
EXCEPÇÃO FSTREAM FUNCIONAL IOMANIP
IOS IOSFWD IOSTREAM ISTREAM
ITERAÇÃO LIMITES LISTA REGIÃO
MAPA MEMÓRIA NUMÉRICO OSTREAM
FILA DEFINIR SSTREAM PILHA
STDEXCEPT STREAMBUF CADEIA STRSTREAM
TYPEINFO UTILITÁRIO VALARRAY VECTOR


P3: como retêm a funcionalidade iostream antigo do Visual C++ .NET 2003 ou de versões anteriores do Visual C++ se porta o projecto de uma versão anterior?

A3:Se pretender manter a biblioteca iostream antigo (<iostream.h>), inclua um ou mais dos ficheiros de cabeçalho iostream antigos no código. Não utilize os novos cabeçalhos Standard C++. Não é possível misturar chamadas para a biblioteca iostream antiga e nova biblioteca Standard C++.



P4: Como posso criar as bibliotecas Standard de C++ bibliotecas predefinido para a aplicação?

A4: Se pretender predefinir as bibliotecas Standard de C++, inclua um ou mais novos cabeçalhos de C++ padrão. Lembre-se de que não é possível misturar chamadas iostream antiga e nova biblioteca Standard C++. Bibliotecas existentes (ligação estática ou dinâmica) que utilize antigo iostream funções terão de ser modificado para utilizar funções de iostream de biblioteca Standard C++.



P5: pretende utilizar bibliotecas padrão de C++ numa aplicação Microsoft Foundation Classes (MFC). Isto provocará quaisquer conflitos com as bibliotecas de tempo de execução C?

A5: ' Não '. MFC não utiliza quaisquer funções de tempo de execução C que irão entrar em conflito com as bibliotecas de C++ padrão.



P6: porque é que obtenho o erro "erro C2065: 'cout': não declarado identificador" Apesar de ter incluído <iostream>?

A6: Biblioteca de C++ padrão é implementada no seu próprio espaço de nomes "padrão". Certifique-se adicionar a instrução
using namespace std;
				
no início do programa ou para qualificar cada Standard C++ identificador de biblioteca com o espaço de nomes padrão, por exemplo, std::cout.



P7: porque é que recebo "Erro de compilador C2371: 'identificador' redefinição; diferentes tipos básicos"?

A7:Em versões anteriores ao Visual C++ 2005 do Visual C++, mistura Standard C++ cabeçalhos e cabeçalhos iostream antigo causa este erro, mesmo se são incluídas nos ficheiros de origem diferentes. Seguem-se os cabeçalhos diferentes:

Antigo iostream cabeçalhos

Reduzir esta tabelaExpandir esta tabela
FSTREAM.H IOMANIP.H
IOS.H IOSTREAM.H
ISTREAM.H OSTREAM.H
STDIOSTR.H STREAMB.H
STRSTREA.H

Cabeçalhos de C++ padrão

Reduzir esta tabelaExpandir esta tabela
ALGORITMO BITSET COMPLEXO DEQUE
EXCEPÇÃO FSTREAM FUNCIONAL IOMANIP
IOS IOSFWD IOSTREAM ISTREAM
ITERAÇÃO LIMITES LISTA REGIÃO
MAPA MEMÓRIA NUMÉRICO OSTREAM
FILA DEFINIR SSTREAM PILHA
STDEXCEPT STREAMBUF CADEIA STRSTREAM
TYPEINFO UTILITÁRIO VALARRAY VECTOR


P8: Tenho um projecto que foi criado com a opção "Ignorar bibliotecas predefinido" ( / NOD ou / NODEFAULTLIB ). Com o Visual C++ 5.0 ou posterior, Estou a receber linker erro "LNK2001: símbolo externo não resolvido 'Símbolo';" em todas as chamadas de função iostream. O que foi alterado?

A8: As funções iostream foram removidas do Runtime do C biblioteca.

Se estiver a utilizar as funções de iostream antigo, terá de adicionar uma biblioteca adicional da seguinte forma: LIBCI.lib (single-threaded <ml>), LIBCIMT.lib (multithread <mt>) ou MSVCIRT.lib (multithread dll <md>). Estas bibliotecas foram removidas de Visual C++ 2005 e versões posteriores do Visual C++.

Se estiver a utilizar as novas funções de iostream incluídas com a biblioteca Standard C++, terá de adicionar uma biblioteca adicional da seguinte forma: LIBCP.lib (single-threaded <ml>), LIBCPMT.lib (multithread <mt>) ou MSVCPRT.lib (multithread dll <md>).

Não misture versões diferentes das bibliotecas. Por exemplo, se estiver a utilizar a versão single-threaded da biblioteca de tempo de execução C, terá também de utilizar a versão single-threaded do antigo iostream biblioteca ou da biblioteca Standard C++.

Não é possível misturar chamadas para as funções de biblioteca iostream antigo e as novas funções de iostream de biblioteca Standard C++.



P9: Estou a obter o compilador avisos C4786 e/ou C4788. Nenhum dos símbolos no meu programa estiver em qualquer parte perto de 255 caracteres. O que está a causar este?

A9: C4786/C4788 é emitido quando nome um símbolo excede 255 caracteres de comprimento. Isto acontece frequentemente com modelo de classe e STL extensivamente utiliza o modelo de classe.

Ignorar este aviso é normalmente seguro. Utilizar um aviso # pragma (desactivar: 4786,4788) para suprimir as mensagens.



P10: Estou a obter o aviso do compilador "C4530: processador de excepções C++ utilizado, mas desenrolamento semântica não estão activados. Especifique - GX." O que faz isto média?

A10: Programas que utilizam a biblioteca Standard C++ devem ser compilados com processamento de excepções C++ activado. Processamento de excepções de C++ pode ser activado por:
  • Seleccionar a opção Activar processamento de excepções na categoria de linguagem do C++ do separador C/C ++ na caixa de diálogo Definições do Project . - ou -

  • Utilizar o parâmetro de compilador /GX .


P11: Estou a obter o erro de compilador C2146, seguido de C2065 e finalmente C2143, todos os apontando para a mesma linha na minha origem. O que faz isto média?

A11: Esta sequência de erros pode ser devida o seguinte tipo de construção:
vector<int, allocator<int>>iV;
				
o problema é causado pelo consecutivos ">>" no fim da declaração. A solução consiste em colocar um espaço entre dois caracteres, para a construção torna-se:
vector<int, allocator<int> > iV;
				
isto é consistente com a proposta ANSII especificação.


A informação contida neste artigo aplica-se a:
  • Microsoft Visual C++ 2008 Express Edition
  • The Standard C++ Library nas seguintes plataformas
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 6.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
    • Microsoft Visual C++ 6.0 Professional Edition
    • Microsoft Visual C++, 32-bit Learning Edition 6.0
    • Microsoft Visual C++ .NET 2002 Standard Edition
    • Microsoft Visual C++ .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbfaq kbinfo KB154419 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 154419  (http://support.microsoft.com/kb/154419/en-us/ )
Partilhar
Opções de suporte adicionais
Fóruns de Suporte da Comunidade Microsoft
Contacte-nos directamente
Encontre um parceiro certificado Microsoft
Loja Microsoft