using fstream to read every character including spaces and newline

前端 未结 13 1560
一个人的身影
一个人的身影 2020-12-07 22:47

I wanted to use fstream to read a txt file.

I am using inFile >> characterToConvert, but the problem is that this omits any spaces an

13条回答
  •  情话喂你
    2020-12-07 23:15

    I also find that the get() method of ifstream object can also read all the characters of the file, which do not require unset std::ios_base::skipws. Quote from C++ Primer:

    Several of the unformatted operations deal with a stream one byte at a time. These operations, which are described in Table 17.19, read rather ignore whitespaces.

    These operations are list as below: is.get(), os.put(), is.putback(), is.unget() and is.peek().

    Below is a minimum working code

    #include 
    #include 
    #include 
    
    int main(){
        std::ifstream in_file("input.txt");
    
        char s;
    
        if (in_file.is_open()){
            int count = 0;
            while (in_file.get(s)){
    
                std::cout << count << ": "<< (int)s <<'\n';
                count++;
            }
    
        }
        else{
            std::cout << "Unable to open input.txt.\n";
        }
        in_file.close();
    
        return 0;
     }
    

    The content of the input file (cat input.txt) is

    ab cd
    ef gh
    

    The output of the program is:

    0: 97
    1: 98
    2: 32
    3: 99
    4: 100
    5: 10
    6: 101
    7: 102
    8: 32
    9: 103
    10: 104
    11: 32
    12: 10
    

    10 and 32 are decimal representation of newline and space character. Obviously, all characters have been read.

提交回复
热议问题