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

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

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

Некорректный вывод - C++

14.10.2013, 23:35. Просмотров 408. Ответов 4
Метки нет (Все метки)

Не получается вывести имена файлов (какая-то белиберда на выходе). И не могу понять, как обратиться к содержимому файла

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
29
30
31
32
33
34
35
#include <iostream> 
#include <fstream> 
#include <iostream>
#include <string>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
 
using namespace std;
 
void main()
{
    cout<<"Enter the path to the file"<<endl;
    string NameDirectory; 
    cin>>NameDirectory;
 
    ofstream fout("D:\\1.txt",ios::out|ios::app);
 
    string FullName = NameDirectory + "\\*.txt";
 
    cout<<FullName<<endl;
 
    WIN32_FIND_DATA FindFileData;
    HANDLE hFind;
 
    hFind = FindFirstFile(LPCWSTR(FullName.c_str()), &FindFileData);
 
    fout<<FindFileData.cFileName<<endl;
    
    while ((FindNextFile(hFind, &FindFileData))) 
    {
        fout<<FindFileData.cFileName<<endl;
    }
        
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.10.2013, 23:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Некорректный вывод (C++):

Некорректный вывод - C++
Почему-то все выводимые y равны 1. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;math.h&gt; #include &lt;conio.h&gt; #include...

Некорректный вывод - C++
Доброго времени суток Суть такова: есть прога, выполняющая действия с односвязным списком. Первоначально, инфа в список подаётся из...

Некорректный вывод - C++
Проблема очень странная, впервые с таким сталкиваюсь. Итак, вводятся сначала 3 числа через пробел (кол-во вводов, ширина открытки и высота)...

Некорректный вывод кириллицы - C++
при выводе текста на русском, выводит символы типа:&lt;,&gt;,смайлики и тому подобное. код: int main () { setlocale(LC_ALL, &quot;RUS&quot;); ...

Некорректный вывод в файл - C++
Здравствуйте. Компилятор находит ошибку, что-то с вводом выводом #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;fstream&gt; ...

Некорректный вывод строки - C++
#include &lt;iostream&gt; #include &lt;string&gt; #include &lt;cstring&gt; #include &lt;windows.h&gt; #include &lt;limits&gt; using namespace std; ...

4
mytilus
83 / 83 / 9
Регистрация: 04.10.2012
Сообщений: 335
15.10.2013, 01:43 #2
Ошибка в строке 26. LPCWSTR(FullName.c_str()) - крайне некорректная запись. Данные, которые являются ASCII-строкой, вы просите рассматривать как UNICODE-строку. А она таковой не является.
Предлагаю заменить строки 23 и 26 соответственно на:
C++
1
WIN32_FIND_DATAA FindFileData;
C++
1
hFind = FindFirstFileA(FullName.c_str(), &FindFileData);
Обратите внимание: WIN32_FIND_DATAA и FindFirstFileA.
0
svana
0 / 0 / 0
Регистрация: 14.10.2013
Сообщений: 2
15.10.2013, 07:51  [ТС] #3
На выводе всегда получаю -858993460, хотя в файлах записаны числа (3, 7...). Как корректно вывести?

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
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream> 
#include <fstream> 
#include <string>
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
 
using namespace std;
 
void main()
{
    cout<<"Enter the path to the file"<<endl;
    string NameDirectory; 
    cin>>NameDirectory;
    string FullName = NameDirectory + "\\*.txt";
 
    ofstream fout("D:\\result.txt",ios::out|ios::app);
 
    WIN32_FIND_DATAA FindFileData;
    HANDLE hFind;
    hFind = FindFirstFileA(FullName.c_str(), &FindFileData);
    ifstream fin (FindFileData.cFileName);
    
    int a;
    int sum = 0;
 
    fin>>a;
    fout<<FindFileData.cFileName<<": "<<a<<endl;
    
    while ((FindNextFileA(hFind, &FindFileData))) 
    {
        fin>>a;
        fout<<FindFileData.cFileName<<": "<<a<<endl;
        sum+=a;
        Sleep(1000);
    }
 
    fout<<sum<<endl;
        
}
0
Folko
265 / 253 / 7
Регистрация: 27.09.2013
Сообщений: 877
Записей в блоге: 1
15.10.2013, 08:05 #4
svana, попробуйте вывести число а в строковом виде.
Вот примерное преобразование, хотя думаю можно и проще.
C++
1
2
3
4
int x = 4; // число
    char buf[20];
    sprintf(buf,"%d",x);
    four << buf; // число в виде строки в buf
Добавлено через 5 минут
Если выводим много значений, проще засунуть этот код в функцию, принимающую число и возвращающую string. и писать вроде

fout << inttostr(x) << endl;
0
calculon
14 / 14 / 3
Регистрация: 18.07.2012
Сообщений: 79
15.10.2013, 08:44 #5
svana, дело в том, что при открытии файла для чтения Вы передаете конструктору потока только имя файла, а не полный путь к нему. Поток просто не создается. Исправьте конструктор на
C++
1
 ifstream fin (NameDirectory + "\\" + FindFileData.cFileName);
0
15.10.2013, 08:44
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 08:44
Привет! Вот еще темы с ответами:

Некорректный вывод в файл - C++
Добрый день. Реализован алгоритм Хаффмана: #include &quot;stdafx.h&quot; using namespace std; class Node { public: int a;...

Некорректный вывод текста - C++
Здравствуйте! Есть такая функция: wchar_t* GetPlayerInfo() { wchar_t buffer; ....... int player_scores = GetScores(player); ...

Некорректный вывод в Borland 3.1 - C++
пытаюсь разобраться с деревом.написал программу для ввода и вывода.она почему то криво выводит.вот скрин.программа Borland 3.1 ...

Некорректный вывод программы - C++
подскажите, пожалуйста, в чем ошибка #include &lt;iostream&gt; using namespace std; int main ( ) { const int n=10; int...


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

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

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