| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > Помогите найти ошибку |
| Автор: m0dest 26.2.2007, 11:00 |
| Есть файл 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 26.2.2007, 11:05 |
| Потому, что память надо выделять под строки и их из буффера в массив копировать, а ты только указатель копируешь. |
| Автор: Daevaorn 26.2.2007, 11:07 |
| m0dest, если уж на то пошло, то используй std::string и не мучайся. |
| Автор: Vyacheslav 26.2.2007, 11:07 | ||
Потому что, в принципе это вообще работать не должно. Просто Вам везет
|
| Автор: m0dest 26.2.2007, 11:24 |
| какие-то непонятные ошибки в 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) |
| Автор: m0dest 26.2.2007, 11:38 |
| Vyacheslav, спасибо огромное, что объяснили. Я прямо не нарадуюсь. |