// stdafx.h : include file for standard system include files,
// or project specific include files that are used frequently, but
// are changed infrequently
//
#pragma once
#include <iostream>
#include <tchar.h>
using namespace std;
// TODO: reference additional headers your program requires here
А это cpp файл:
// pt4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
string user_name;
return 0;
}
Компилируется без ошибок.
Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
Здравствуйте, <Аноним>, Вы писали:
А>Компилируется без ошибок. А>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
А вы её, переменную эту попробуйте использовать.. может и ошибка проявится..
Нет ничего невозможного..
Re[2]: Строка объявляется без <string.h>
От:
Аноним
Дата:
07.10.04 16:09
Оценка:
Здравствуйте, Шахтер, Вы писали:
Ш>Здравствуйте, <Аноним>, Вы писали:
Ш>Вероятно, из-за iostream.
Здравствуйте, <Аноним>, Вы писали:
А>Компилируется без ошибок. А>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
Здравствуйте, butcher, Вы писали:
B>Здравствуйте, <Аноним>, Вы писали:
А>>Компилируется без ошибок. А>>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>? B>А вы её, переменную эту попробуйте использовать.. может и ошибка проявится..
использова таким образом: user_name.assign("RUSSIAN"); все ОК
Re[2]: Строка объявляется без <string.h>
От:
Аноним
Дата:
07.10.04 16:22
Оценка:
Здравствуйте, achp, Вы писали:
A>Здравствуйте, <Аноним>, Вы писали:
А>>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
A>Во-первых, <string.h> не имеет никакого отношения к типу std::string.
A>Во-вторых, <string>, где этот тип в действительности определен, скорее всего включается косвенно, через <iostream>.
<string.h> — это опечатка, я имел ввиду <string>
по-поводу "Во-вторых", я не спорю, но зачем путать людей: примеры MSDN, серьезные книги
Re[2]: Строка объявляется без <string.h>
От:
Аноним
Дата:
07.10.04 16:24
Оценка:
Здравствуйте, yxiie, Вы писали:
Y>Здравствуйте, <Аноним>, Вы писали:
А>>Компилируется без ошибок. А>>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
Y>потому что:
Y>iostream->istream->ostream->ios->xlocnum->streambuf->xiosbase->xlocale->cstring->string.h
Y>
Great, я дошел до xlocnum и решил написать вопрос в форуме
На самом деле форум пестри сообщениями людей, у которых не компилируется какая-то операция со string'ом. Все компилируются, а это нет. Оказывается, не подключен <string>.
Здравствуйте, Аноним, Вы писали:
А>Это содержимое моего stdafx.h файла:
А>#include "stdafx.h"
А>int _tmain(int argc, _TCHAR* argv[]) А>{ А> string user_name;
А> return 0; А>}
А>Компилируется без ошибок. А>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
Ну, не string.h, а просто string
Может быть в других файлах прописан?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Аноним, Вы писали:
А><string.h> — это опечатка, я имел ввиду <string> А>по-поводу "Во-вторых", я не спорю, но зачем путать людей: примеры MSDN, серьезные книги
Почему же путать? Как раз в примере написано правильно. Мейерс, например, рекомендует (цитирую):
При каждой ссылке на элементы пространства имен std вы [skipped] отвечаете за включение соответствующих заголовков.
Я считаю это правильным и сам стараюсь поступать именно таким образом. Потому что может так случиться, что придется компилировать проект с другой реализацией STL, а в ней может оказаться, что <iostream> не включает <string>. Проект не будет компилироваться. А всё потому, что стандарт не определяет какие стандартные заголовки могут или должны включаться в другие стандартные заголовки.
Здравствуйте, Аноним, Вы писали:
А>Это содержимое моего stdafx.h файла:
А>// stdafx.h : include file for standard system include files, А>// or project specific include files that are used frequently, but А>// are changed infrequently А>//
А>#pragma once
А>#include <iostream> А>#include <tchar.h> А>using namespace std;
А>// TODO: reference additional headers your program requires here
А>А это cpp файл:
А>// pt4.cpp : Defines the entry point for the console application. А>//
А>#include "stdafx.h"
А>int _tmain(int argc, _TCHAR* argv[]) А>{ А> string user_name;
А> return 0; А>}
А>Компилируется без ошибок. А>Вопрос: почему компилятор (.NET) не ругается на отсуствие заголовочного файла <string.h>?
VC 7.1
<iostream>-<istream>-<ostream>-<ios>-<xlocnum>-<streambuf>-<xiosbase>-<xlocale>-<strxcept>-<xstring>
а в нём, заветном: