![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| m0dest |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Есть файл num.dat :
String1 String2 String3 String4 Хочу считать содержимое в массив строк. Пишу: #include <iostream> #include <fstream> #include <cstring> using namespace std; void main() { char *s[4]; const int SIZE=80; char buffer[SIZE]; ifstream inClientFile( "num.dat", ios::in ); for( int i=0; i<4; i++) { inClientFile.getline(buffer,SIZE); s[i]=buffer; cout<<s[i]<<endl; } inClientFile.close(); cout<<s[0]; } При запуске выдает: String1 String2 String3 String4 String4 Почему последняя строка "String4"? s[0] должно же быть равно String1? |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
Потому, что память надо выделять под строки и их из буффера в массив копировать, а ты только указатель копируешь.
|
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
m0dest, если уж на то пошло, то используй std::string и не мучайся.
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Потому что, в принципе это вообще работать не должно. Просто Вам везет
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| m0dest |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
какие-то непонятные ошибки в 17, 18 и 23 строке
error C2679: binary '<<' : no operator defined which takes a right-hand operand of type 'class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >' (or there is no acceptable c onversion) |
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Кстати забираю свои слова обратно. Ваша код работоспособен
Эта строка каждый раз присваивает один и тот же адрес, указывающий на один и тот же буфер. А содержимое буфера после очерного чтения меняется. После окночания цикла там содержится String4 . -------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| m0dest |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 42 Регистрация: 19.1.2007 Репутация: нет Всего: нет |
Vyacheslav, спасибо огромное, что объяснили. Я прямо не нарадуюсь.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |