Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Zetway
13 / 13 / 4
Регистрация: 08.08.2010
Сообщений: 117
#1

трабла с выводом строки - C++

16.03.2011, 18:07. Просмотров 379. Ответов 9
Метки нет (Все метки)

вот код который неправильно работает:
C++
1
2
3
4
5
6
7
8
9
10
void Cue::Out()
{   
    char ch;    
    for (int i=0; i<curInd; ++i)
    {       
        ch = Str[i++];
        cout<<ch;
    }
    cout<<endl; 
}
вот хэдер
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
26
27
28
#pragma once
 
class Cue
{
    int size, step, curInd;
    char* Str;
    void newMem();
    void terminate(char * st, int index);
public:
    Cue();
    ~Cue(void);
 
 
    Cue (char* pStr, int iSize);
    Cue (const Cue & right);
    
    Cue & operator =(const Cue & right);
    Cue & operator +( const Cue & right);
    Cue & operator +(const char * right);
    Cue & operator +(const char right);
    Cue & operator +=(const char right);
    Cue & operator +=(const Cue & right);
    Cue & operator +=(const char * right);
 
 
    void Out();
    void Input();
};
выводит только некоторые буквы стороки Str, смотрел в вотче строка правильная. пользуюсь юникодом
http://www.cyberforum.ru/cpp-beginners/thread356557.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.03.2011, 18:07
Я подобрал для вас темы с готовыми решениями и ответами на вопрос трабла с выводом строки (C++):

Структура и класс string. Проблема с выводом строки.
Такая проблема: объявляю структуру с классом string: struct exam {...

введением - выводом строк!! не правильная запись строки в массив!!!!
сами смотрите на код! по - ходу все правильно!!!! прога в массив записывает...

OemToChar(), OemToCharBuff() - ввод строки на русском с дальнейшим выводом
И снова эта же тема... Или я принцыыыпп работы ни в какую не понимаю или шо...

Напишите программу для модификации введенной с клавиатуры строки с последующим выводом результата на экран
Напишите программу для модификации введенной с клавиатуры строки с последующим...

Трабла с прогой
&quot;дан радиус окружности. Найти длину окружности и площадь круга&quot; как...

9
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.03.2011, 18:08 #2
Цитата Сообщение от Zetway Посмотреть сообщение
for (int i=0; i<curInd; ++i)
* * * * * * * * ch = Str[i++];
Переменная i увеличвается 2 раза за одну итерацию цикла. Правильная версия будет такой:
C++
1
ch = Str[i];
1
Zetway
13 / 13 / 4
Регистрация: 08.08.2010
Сообщений: 117
16.03.2011, 18:25  [ТС] #3
C++
1
2
3
4
5
6
7
8
9
10
void Cue::Out()
{   
    char ch;    
    for (int i=0; i<curInd; ++i)
    {       
        ch = Str[i];
        cout<<ch;
    }
    cout<<endl; 
}
выводит только вторую половину строки
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.03.2011, 18:28 #4
Возможно, вы где-то случайно смещаете указатель. Поищите в других функциях изменения указателя char* Str, вроде Str++ или присвоения.
0
Zetway
13 / 13 / 4
Регистрация: 08.08.2010
Сообщений: 117
16.03.2011, 18:28  [ТС] #5
почему-то курсор идет на начало и работает инсерт...
0
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.03.2011, 18:31 #6
Zetway, читать мысли на расстоянии - это сложно. Если бы вы были рядом... А так - нет, не получится. Выложите весь код, ошибка не в Cue::Out().
0
Zetway
13 / 13 / 4
Регистрация: 08.08.2010
Сообщений: 117
16.03.2011, 18:36  [ТС] #7
Вот проект, юзаю VS 2010
0
Вложения
Тип файла: rar blondie c++.rar (5.43 Мб, 8 просмотров)
talis
793 / 545 / 61
Регистрация: 11.05.2010
Сообщений: 1,298
Записей в блоге: 1
16.03.2011, 18:45 #8
Visual Studio нет, отладить не смог. Но есть соображение.

cue.cpp, в районе строки 24:
C++
1
2
3
4
5
6
7
8
Cue::Cue(char* RightStr, int iSize):size(iSize), step(iSize/2), curInd(0),
Str(new char [size])
{
    //cout<<"Cue constr (int,int)"<<size<<" "<<this<<endl;
    for (int i=0; i<size; ++i)
        Str += RightStr[i];  //тут возможно изменение указателя. Проверьте
    terminate(Str, curInd);
}
0
fasked
Эксперт С++
4976 / 2556 / 241
Регистрация: 07.10.2009
Сообщений: 4,311
Записей в блоге: 1
16.03.2011, 18:48 #9
Цитата Сообщение от talis Посмотреть сообщение
Str += RightStr[i];
C++
1
Str[i] = RightStr[i];
0
Zetway
13 / 13 / 4
Регистрация: 08.08.2010
Сообщений: 117
17.03.2011, 08:41  [ТС] #10
talis, посмотрите в мейн, я много чего не использую вообще ис того что написал...

Добавлено через 13 часов 8 минут
Эй, люди! проблема не решена!
0
17.03.2011, 08:41
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.03.2011, 08:41
Привет! Вот еще темы с решениями:

Трабла с функцией (
#include &lt;stdio.h&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; #include...

Трабла с конструктором
Компилятор никаких ошибок не выдает, но программа не запускается. using...

Трабла с LibCurl
#include &quot;stdafx.h&quot; #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #include...

трабла с MessageBox
Вот такая вот задачка сначала задается текст в ANSI ,затем его конвертируем в...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru