![]() |
|
Модераторы: 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 пропускается автоматически в гетлайн, да? И переводится ли на новую строку? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
||||
|
|||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
проверку я думаю проще тебе провести. все-таки твоя программа.
Лучше посмотри мой вариант в той ветке. Он хоть и не такой красивый файл создает, зато читает его просто. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
ну а насчет игнора - я правильно поняла смысл ф-ии?
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
Блин :(
Как определить пуст ли файл. А что то ф-ию не найду. -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
tvstruct.item.pszText =TEXT(i->Name.c_str());
error C2065: 'Li' : undeclared identifier error C2228: left of '.c_str' must have class/struct/union error C2227: left of '->Name' must point to class/struct/union/generic type почему, блин? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| dizzy1984 |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 675 Регистрация: 15.2.2007 Репутация: 3 Всего: 25 |
TEXT это макрос, в моем случае он определяется как
Т.е как склейка символа 'L' с тем, что ему дают в качестве аргументов. Попробуй убрать его
|
||||
|
|||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
не, не фурычит, надо преобразовать из char * в LPWSTR
-------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
И еще, господа. Мне нужно открыть файл, если его нет - создать.
std::ifstream inFile; inFile.open("Tree.txt",0x01); if (!inFile) { // ошибка при открытии MessageBox(0,TEXT("Error!"),TEXT("File opening Error"),MB_OK); return; } файла нет выдает ошибку. какое тогда должно быть значение второго параметра в inFile.open("Tree.txt",0x01); чтобы файл создавался? -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
tonchitos, ifstream - это файл для чтения (input file stream). Какой смысл его создавать, когда ты из него только читать будешь?
если тебе нужен поток для чтения и записи, то используй std::fstream. Он по умолчанию открывается для чтения и записи (ну и создается при необходимости). Что за 0x01? Что это? Если тебе нужно указывать режим открытия, то используй std::ios_base::<mode> (std::ios_base::in, std::ios_base::app, std::ios_base::out...) |
|||
|
||||
| tonchitos |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 447 Регистрация: 24.2.2007 Репутация: нет Всего: 40 |
вот теперь такая фигня:
при добавлении диалога надо прочитать файл и записать деревяшку, потом вывести только верхних потомков
где-то не фурычит. -------------------- – Люди забыли эту истину, – сказал Лис, – но ты не забывай: ты навсегда в ответе за всех, кого приручил. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Боюсь, с MFC это в другой раздел.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |