假设 .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;
}
Streams 区分“格式化”读取和“未格式化”读取。
operator>>
.getline
std::getline
std::ws
basic_istream::operator>>(basic_streambuf*)
所以,如果你想阅读空白字符,只需使用除
operator>>
之外的任何内容。
在你的情况下,看起来你想要
inputFile.get()
,尽管有更有效的方法来读取输入。
请注意,两种
getline
方法都不会读取分隔符,默认为'\n'