如何使用 fstream 读取和保存' ' 当它更改为 .txt 文件中的新行时作为字符?

问题描述 投票:0回答:1

假设 .txt 文件有两行如下:

Hi, X
Bye

我希望向量包含

['H', 'i', ',', ' ', 'X', '\n', 'B', 'y', 'e']
,但我无法让
fstream
'\n'
记录为字符(它只是使它成为
' '
又名空白)。

有什么想法吗?我是否使用了错误的方法来获得我想要的答案?

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
using namespace std;

int main(){
    vector<char> text;
    char c;
    fstream inputFile;
    string filePath = "C:\\doc\\lib\\hello.txt";
    inputFile.open(filePath);
    inputFile.unsetf(ios_base::skipws);

    if(!inputFile) exit(1);

    while(inputFile >> c){
        text.push_back(c);
    }

    for(int i = 0; i < text.size(); i++){
        cout << text[i];
    }
    return 0;
}
c++ char fstream
1个回答
1
投票

Streams 区分“格式化”读取和“未格式化”读取。

  • 格式化读取总是会跳过空格
    • operator>>
  • Unformatted reads 将读取所有字节。
    • 所有成员函数,包括
      .getline
    • std::getline
    • std::ws
    • basic_istream::operator>>(basic_streambuf*)

所以,如果你想阅读空白字符,只需使用除

operator>>
之外的任何内容。

在你的情况下,看起来你想要

inputFile.get()
,尽管有更有效的方法来读取输入。

请注意,两种

getline
方法都不会读取分隔符,默认为
'\n'

© www.soinside.com 2019 - 2024. All rights reserved.