2010-01-06 2 views
0

Я нахожусь в начале разработки простого шестнадцатеричного редактора (который только читается в то время). Я хочу, чтобы заменить OA для "\n", я пытаюсь с этим кодом:Подстановка 0A Для n

#include <iostream> 
#include <fstream> 
#include <iomanip> 
using namespace std; 

int main() { 
    ifstream infile; 
    int crtchar = (int)infile.get(); 
    infile.open("test.txt", ifstream::in); 
    while(infile.good()) 
    { 
     if(crtchar != 0xA) 
     cout << hex << setfill('0') << setw(2) << crtchar << ":"; 
     else 
     cout << endl; 
    } 
    cout << "\n=====================================\n"; 
    infile.close(); 
    return 0; 
} 

Он компилируется без ошибок, но когда я пытаюсь выполнить его, я просто ничего не получил:

C: \ Документы и настройки \ Nathan Campos \ Desktop> hex

==================================================================== =

C: \ Documents and Settings \ Nathan Campos \ Рабочий стол>

Это происходит сразу после того, как я добавил эту функцию, чтобы заменить OA на \n, потому что раньше она работала очень красиво. Что не так?

+2

Вы уверены, что используете одну и ту же программу, за исключением переключателя '0xA' для' '\ n''? Является ли EOL-перевод кусающим вас? Если у вас действительно есть другое поведение для этих двух, попробуйте ли вы напечатать целочисленное значение '' \ n''? Почему вы даже хотите избежать более читаемого (и более портативного) '' \ n'' в пользу '0xA'? –

ответ

7

Вы понимаете, что вы только чтение символа раз и еще до открытия файла, при этом?

3

Вздох. Вы пытаетесь прочитать файл, прежде чем открывать его.

0

Не первый ли вы open(...) ваш файл, а затем попробуйте get()? Кроме того, не следует делать больше get() «S внутри время цикла

0

Поместите int crtchar = (int)infile.get(); внутри while(infile.good()) и дать ему попробовать.

Смежные вопросы