![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
Вот хочу вывести в файл строку и прочитать строку, да компилятор ругаецо
stream.write(Name,Name.length()); cannot convert parameter 1 from 'const std::string' to 'const char *' как быть? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
|
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
мерси большое!
Добавлено через 4 минуты и 46 секунд а при чтении? ведь эта ф-ия преобразует в чар. а как с обратным случаем быть? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| maxim1000 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
чтобы прочитать, нужно решить в каком виде будет храниться информация о длине строки
примеры: 1. весь файл предназначен для хранения только этой строки, можно использовать его размер 2. размер пишется перед строкой в каком-нибудь формате 3. конец строки представляется каким-то специальным символом ИМХО, наиболее удобен второй способ (первый создаст проблемы. если захочется хранить что-то ещё после строки, третий не позволяет узнать, сколько нам нужно памяти для чтения строки, пока не будет прочитан последний символ) соответственно выбранному способу нжно и записывающий код реализовать... -------------------- qqq |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
ну допустим 2й способ
Добавлено через 2 минуты и 18 секунд но вроде ф-ия getline читает строку до конца строки. Можно подробнее? я должна записать в начало размер, а после, читать посимвольно? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| maxim1000 |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
она читает строку до символа "enter" если под строкой понимать строку текста, как это понимается в текстовых редакторах - то нормально однако, если понимать строку в смысле C/C++ - [указатель на] последовательность символов, заканчивающаяся нулём во втором случае там вполне могут быть символы перевода строки например, "qqq\nwww" это вполне нормальная строка в смысле C/C++ при выводе на экран она даст две строки: qqq www если у нас "однострочные" строки, вполне можно использовать \n в качестве признака конца строки (т.е. третий способ), как раз на этот случай расчитана std::getline тогда запись строки будет:
а чтение:
-------------------- qqq |
||||||
|
|||||||
| andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
cannot convert parameter 2 from 'const std::string' to 'std::basic_string<_Elem,_Traits,_Ax> &'
вот что выдает... на std::string Name; std::getline(stream,Name); -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
Ой, народ, а эт че:
stream >> pole1; stream.ignore(9); stream >> pole2; stream.ignore(9); stream >> level; error C2679: binary '>>' : no operator found which takes a right-hand operand of type 'const int' (or there is no acceptable conversion) -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
operator>> - это чтение из потока в переменную. А вот чтения из потока в константу не существует по определению |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
И, и что делать? У меня не константа. Просто инт...
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
где у тебя? я кода не вижу. Скорее всего, сама структура константная (а все ее поля наследуют константность).
|
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
class Node
{ std::vector<Node> childs; std::string Name; int pole1; int pole2; int level; Добавлено через 10 минут и 31 секунду
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
строка 42: std::istream& readFile (std::istream &stream) const;
const означает, что эта функция не меняет элементы класса, так как для нее они константные. В данном случае, ключевое слово const здесь лишнее. Так как сама суть метода readFile подразумевает изменение элементов класса. С деревом разобралась или совсем нет? Почему на мои вопросы так и не ответила? Это сообщение отредактировал(а) bsa - 17.3.2008, 01:12 |
|||
|
||||
| tonchitos |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
теперь ответила
Добавлено через 2 минуты и 47 секунд Спасибо, конст убрала - помогло Добавлено через 10 минут и 25 секунд вот у меня ф-ии чтения дерева из файла и запись дерева в файл. Плиз. Проверьте их...
Описание класса дерево я уже приводила... Добавлено через 11 минут и 28 секунд если я правильно поняла, то игнор пропускает символы в потоке. А \n пропускается автоматически в гетлайн, да? И переводится ли на новую строку? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |