Проблема компиляции C ++ в C ++ Builder - PullRequest
1 голос
/ 17 марта 2010

Я написал программу на C ++ для университетского задания. Я использовал Netbeans 6.8, работающий на моем Mac, и код работает без проблем, без предупреждений, ошибок или проблем / ошибок. Однако при компиляции и запуске на компьютере под управлением Windows с использованием CodeGear RAD Studio 2009 (C ++ Builder) получаю несколько ошибок.

[BCC32 Error] main.cpp(51): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'string'
[BCC32 Error] main.cpp(62): E2093 'operator==' not implemented in type 'string' for arguments of the same type
[BCC32 Error] main.cpp(67): E2093 'operator==' not implemented in type 'string' for arguments of the same type
[BCC32 Error] main.cpp(112): E2093 'operator==' not implemented in type 'string' for arguments of the same type
[BCC32 Error] main.cpp(121): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'string'
[BCC32 Error] main.cpp(130): E2093 'operator==' not implemented in type 'string' for arguments of the same type
[BCC32 Error] main.cpp(133): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'string'
[BCC32 Error] main.cpp(139): E2094 'operator<<' not implemented in type 'ostream' for arguments of type 'string'
[BCC32 Error] main.cpp(153): E2094 'operator<<' not implemented in type 'fstream' for arguments of type 'string'
[BCC32 Error] main.cpp(199): E2094 'operator>>' not implemented in type 'fstream' for arguments of type 'string'
[BCC32 Error] main.cpp(219): E2094 'operator>>' not implemented in type 'istream' for arguments of type 'string'
[BCC32 Error] main.cpp(231): E2094 'operator>>' not implemented in type 'istream' for arguments of type 'string'
[BCC32 Error] main.cpp(240): E2094 'operator>>' not implemented in type 'istream' for arguments of type 'string'
[BCC32 Error] main.cpp(262): E2094 'operator>>' not implemented in type 'istream' for arguments of type 'string'
[BCC32 Error] main.cpp(264): E2094 'operator>>' not implemented in type 'istream' for arguments of type 'string'

Это заголовочные файлы, которые я использую

#include <iostream>
#include <fstream>
#include <cmath>
#include <stdio>
#include <windows> //I added this one just to check and still does not work (I didnt have it on Netbeans/Mac)
using namespace std;

Есть идеи, что вызывает ошибки и как я могу это исправить?

Ответы [ 2 ]

5 голосов
/ 17 марта 2010

Вам нужно:

#include <string>

и это:

#include <windows.h>

хотя я сомневаюсь, что тебе это нужно.

Причина, по которой ваш код работал на одной платформе, но не на другой, заключается в том, что на первой платформе один из других заголовков библиотеки включал сам <string>. Это поведение не указано стандартом C ++, поэтому единственное безопасное правило:

Если вы используете класс или функцию, всегда явно #include заголовок для этого класса или функции в вашем код.

0 голосов
/ 16 апреля 2015

Вы можете сделать это на string объекте:

to_string < char,std::string::traits_type,std::string::allocator_type>()
...