• Paranoid - курс по анонимности и безопасности в сети от команды codeby. Защита персональных данных, анонимность в сети интернет, настройка виртуальных машин, безопасная передача данных, анти форензика и еще много всего полезного. Подробнее ...

  • Мобильный клиент нашего форума для Android гаджетов доступен в Google Play Market по этой ссылке. Клиент можно скачать с нашего форума по этой ссылке. Последняя версия МК в нашем телеграм канале вот здесь

Работа С Файлом, Проблемка

05.04.2009
14
0
#1
Здравствуйте, прошу прощение, если подобные вопросы уже были на форуме(беглый взгляд не обнаружил)
я считываю в С++ (MS Visual Studio 2005) посимвольно с помощью getline символы, проблема возникает в конце строки
фаил "test.txt" содержит следующие данные
cos
12 33.025 55.23 1.01
в шестнадцатеричной системе:
00000000: 63 6F 73 20 20 20 20 20 20 20 20 20 20 0D ОA 31 | COS ..1
00000010: 32 20 33 33 2Е 30 32 35 20 20 35 35 2Е 32 33 20 | 2 33.025 55.23
00000020: 31 2Е 30 31 20 20 20 20 20 20 20 20 20 20 20 20 | 1.01
00000030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 |
00000040: 20 20
Код:
//...
ifstream file("test.txt");
if (!(file))
{
cout<<"Error, File can not open";
return 1;  
}
file >> ch; // string ch;
double k;
char str;
ofstream file_out("test_result.txt", ios::trunc); //в данном случае не важно
file_out << ch << '\n'; // не важно
while (!(file.eof()))
{
file.getline( &str , 1 );
if (str=='\0') continue; // при добавлении этой строки образуется бесконечный цикл
//я не уверен, но вроде '\0' обозначает конец строки, исправте если не так пожалуйста
if ((str=='\n') || (str == ' ')) continue;
if ( !( (str=='+') || (str=='-') || ( (str>='0') && (str<='9') ) ) )
{
cout << "Error data, Invalid symbol\n";
return 0;
}
// ...
вот, по сути я просто хочу считывать числа типа double, вот запутался... может дадите совет как обойти эту проблемку :)
 
Вверх Снизу