Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
whiet
0 / 0 / 0
Регистрация: 11.07.2012
Сообщений: 3
#1

Не работает цикл с переводом типов - C++

14.07.2012, 19:29. Просмотров 319. Ответов 2
Метки нет (Все метки)

Всем привет!

В программе происходят странные вещи. Мне нужно открыть несколько файлов с помощью потока ifstream в цикле, который крутится по переменной int j. Цикл устроен таким образом, что переменная j попадает в специальную функцию, которая генерирует путь к файлу (файлы друг от друга различаются по номеру, который и заключен в переменной j). Чтобы все это осуществить, мне нужно было конвертировать значение j в тип const char*, дабы все это дело удачно поместилось в файловую переменную типа ifstream, воспринимающую только const char* (насколько я понял).

В общем у меня почему-то не работает следующий внешний цикл (во внутреннем происходит работа с файлами):

C++
1
2
3
4
5
6
7
8
    for ( int j = 1; j == 3; j++ )                       // j - переменная для цикла и одновременно номер файла
    {
        tempIntToString << j;                            // Временная переменная для перевода из int в string
        fileNameNum = tempIntToString.str();             // Номеру файла присваивается значение типа string
        cout << "fileNameNum = " << fileNameNum << endl; // Вывод на экран для отладки
        tempIntToString.str("");                         // Очистка переменной для очередной итерации
        tempIntToString.clear();                         // И с clear() и без него - разницы нет
    }
Конкретно в этом цикле fileNameNum у меня типа string, но потом он переводится в const char* через c_str().

На экран ничего не выводится - в этом проблема.

Хотя если смоделировать работу цикла следующим образом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
   tempIntToString << 1;
    fileNameNum = tempIntToString.str();
    cout << "fileNameNum = " << fileNameNum << endl;
    tempIntToString.str("");
    tempIntToString.clear();
    
    tempIntToString << 2;
    fileNameNum = tempIntToString.str();
    cout << "fileNameNum = " << fileNameNum << endl;
    tempIntToString.str("");
    tempIntToString.clear();
   // И так далее
то все будет хорошо: на экране выведется

C++
1
2
3
fileNameNum = 1
fileNameNum = 2
fileNameNum = 3
В чем может быть проблема?

Добавлено через 6 минут
Да, и если сделать цикл

C++
1
for ( j = 1; j == 1; j++ ) {...}
то на экран тоже все выведется.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.07.2012, 19:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Не работает цикл с переводом типов (C++):

Как работает приведение типов - C++
#include &lt;stdio.h&gt; int main(void) { printf(&quot;%d&quot;, (int*)3 + 4); return 0; } То что выведется 19 проверить можно. Но...

Приведение типов: как работает reinterpret_cast<>() ? - C++
Хочу разобраться до конца с приведением типов а именно интересует reinterpret_cast&lt;&gt;(), хотя бы в общих чертах логика этой функции, на...

Параметр и аргумент функции разных типов, но код работает - C++
#include &lt;iostream&gt; #include &lt;fstream&gt; using namespace std; class dist { private: int feet; float inch; ...

Не работает цикл - C++
Не могу понять почему не работает цикл. Объясните, пожалуйста. #include &lt;iostream&gt; using namespace std; int main(int...

Цикл не работает - C++
Вот код // 2.cpp: определяет точку входа для консольного приложения. // #include &quot;stdafx.h&quot; #include &quot;iostream&quot; #include...

Не работает цикл while - C++
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; int main() { setlocale (0,&quot;Ukrainian&quot;); int chcount=0; int...

2
Catstail
Модератор
23500 / 11608 / 1894
Регистрация: 12.02.2012
Сообщений: 18,949
14.07.2012, 19:40 #2
Цитата Сообщение от whiet Посмотреть сообщение
for ( int j = 1; j == 3; j++ )
- мне кажется, что этот цикл просто ни разу не выполнится. Поэтому ничего и не выведется.

Надо писать: for (j=1; j<=3; j++) ...
1
whiet
0 / 0 / 0
Регистрация: 11.07.2012
Сообщений: 3
14.07.2012, 19:46  [ТС] #3
Вот это я дал маху!! Не заметил, заработался совсем! Спасибо огромное!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.07.2012, 19:46
Привет! Вот еще темы с ответами:

Не работает цикл!!! - C++
Help!!!!! Почему не считает цикл... опять где-то ошибся #include&lt;conio.h&gt; #include&lt;stdio.h&gt; #include&lt;math.h&gt; #include&lt;iostream&gt; ...

Цикл for не работает - C++
начал учить с++ дошол к циклам, написал вот такой код, а он видает только число 11, подскажите в чем проблема? #include &lt;iostream&gt; ...

Не работает цикл - C++
int Date::getYear() { int a; while (1) { cout&lt;&lt;&quot;Year: &quot;; cin&gt;&gt;a; if (a&gt;0||a&lt;10000) break; cout&lt;&lt;&quot;Error!&quot;&lt;&lt;endl; ...

Не работает цикл - C++
почему i всегда 0 ? #include &lt;conio.h&gt; #include &lt;iostream&gt; using namespace std; int main(void) { int j = 0; int n =...


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

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

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