Форум программистов, компьютерный форум CyberForum.ru

Список List. Добавляем строки типа char - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.94
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
16.04.2012, 14:37     Список List. Добавляем строки типа char #1
Собственно, не получается в List добавлять корректно строки char.
Нужно получить список из входных строк, а получается список из первых символов входных строк char.
например.
ВХОД: qwerty
werty
erty
rty
ВЫХОД: q w e r
НУЖНО: qwerty werty erty rty
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <list>
#include <string>
 
using namespace std;
 
int main()
{
    int i;
    int k,j;
 
    char *chat_Name=new char[32];
 
    std::list<char> User_Names_chat;
 
    for(i=0;i<5;i++)
    {
        cin.getline(chat_Name,32);
        User_Names_chat.push_back(*chat_Name);
    }
 
    for(std::list<char>::iterator it = User_Names_chat.begin(); it != User_Names_chat.end(); it++)
        std::cout<<*it<<" ";
}
Проверил на string - прекрасно работает
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <list>
#include <string>
 
using namespace std;
 
int main()
{
    int i;
    int k,j;
    string str_Name;
    
    std::list<string> User_Names;
 
    for(i=0;i<5;i++)
    {
        cin>>str_Name;
        User_Names.push_back(str_Name);
    }
 
    for(std::list<string>::iterator it = User_Names.begin(); it != User_Names.end(); it++)
        std::cout<<*it<<" ";
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Байт
 Аватар для Байт
13955 / 8786 / 1222
Регистрация: 24.12.2010
Сообщений: 15,913
16.04.2012, 14:55     Список List. Добавляем строки типа char #2
C++
1
User_Names_chat.push_back(chat_Name);
строка 19 - убери звезду
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.04.2012, 14:58     Список List. Добавляем строки типа char #3
Байт, Эм. Тогда и список должен быть типа std::list<char*>. И вообще со списком лучше указатели не юзать-с.
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
16.04.2012, 16:11  [ТС]     Список List. Добавляем строки типа char #4
Байт,
тогда появляется ошибка
Код
error C2664: void std::list<_Ty>::push_back(_Ty &&): невозможно преобразовать параметр 1 из "char *" в "char &&"
Цитата Сообщение от ForEveR Посмотреть сообщение
И вообще со списком лучше указатели не юзать-с
а что юзать? строки string?
тогда появляется вопрос как string потом перевести в char?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.04.2012, 16:17     Список List. Добавляем строки типа char #5
GBIT,
C++
1
std::string::c_str()
GBIT
 Аватар для GBIT
11 / 11 / 1
Регистрация: 05.10.2011
Сообщений: 219
16.04.2012, 18:18  [ТС]     Список List. Добавляем строки типа char #6
ForEveR,
согласен. уже погуглил)

итак. плавно перехожу к собственно из-за чего весь сыр бор

написал код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
void Write_Substance()
{
    string Name_Substance;
    DWORD buf;
        HANDLE hFile;
        const char* str33;
 
    std::cin>>Name_Substance;
    str33=Name_Substance.c_str(); 
    //cout<<str33;
 
    char *NameF = new char [MAX_PATH];
    strcpy(NameF,"database.txt");
 
    hFile = CreateFileA(NameF,
        GENERIC_READ|GENERIC_WRITE,
        0,
        0,
        OPEN_ALWAYS,
        0,
        0);
 
    WriteFile (hFile, str33, sizeof(str33), &buf, NULL);
 
}
по идее фун-я должна писать в файл ту строку которую я напишу. но записываются только первые 4 символа. почему?

Добавлено через 6 минут
понял что дело в 23 строке.
а именно в sizeof(str33). но почему sizeof(str33)=4 ???
поставил туда 10. записало 10 символов из str33
если str33 < 10 то в файле текст + мусор

Добавлено через 1 час 21 минуту
разобрался. дело в том что sizeof(char*)=4.
нужно через size() отдельно где-то хранить еще и длину string
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.04.2012, 18:28     Список List. Добавляем строки типа char
Еще ссылки по теме:

C++ Преобразование части строки типа char в число
Аргумент типа "unsigned char*" несовместим с параметром типа "const char*" C++
C++ Ошибка "аргумент типа char несовместим с параметром типа char*"

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
16.04.2012, 18:28     Список List. Добавляем строки типа char #7
GBIT, Для char* есть функция strlen.
Yandex
Объявления
16.04.2012, 18:28     Список List. Добавляем строки типа char
Ответ Создать тему
Опции темы

Текущее время: 02:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru