C++ Read文件没有从我的文本文件中读取空白空间吗? 我在一个文本文件中阅读,发现它不会打印单词之间的空白字符。我希望每次读取一个字符,然后将该字符打印到输出窗口。Read将读取该文件,但不显示空白,并且我无法查明为什么空白区域被跳过。 问题:为什么我的阅读不读取我的测试文件中的空白字符?< /强>
当我找到一个空白字符时,我想打印单词空格 代码: 输出C++ Read文件没有从我的文本文件中读取空白空间吗? 我在一个文本文件中阅读,发现它不会打印单词之间的空白字符。我希望每次读取一个字符,然后将该字符打印到输出窗口。Read将读取该文件,但不显示空白,并且我无法查明为什么空白区域被跳过。 问题:为什么我的阅读不读取我的测试文件中的空白字符?< /强> ,c++,C++,当我找到一个空白字符时,我想打印单词空格 代码: 输出 Letter: T T Letter: h h ...etc... 如果要执行格式化输入,请使用非格式化输入 std::fstream::traits_type::int_type ch; while((ch = fin.get()) != std::fstream::traits_type::eof()) { // ... } 如果要执行格式化输入,请使用非格式化输入 std::fstream::traits_typ
Letter: T
T
Letter: h
h
...etc...
如果要执行格式化输入,请使用非格式化输入
std::fstream::traits_type::int_type ch;
while((ch = fin.get()) != std::fstream::traits_type::eof()) {
// ...
}
如果要执行格式化输入,请使用非格式化输入
std::fstream::traits_type::int_type ch;
while((ch = fin.get()) != std::fstream::traits_type::eof()) {
// ...
}
默认情况下,流上的
操作符>>
在解析值之前跳过任何前导空格。例如,这允许您使用int i,j,k读取输入30 60 95
;fin>>i>>j>>k
(否则读取j
将失败,因为30
之后是空格,而不是整数)
如果您还想阅读空格,现在有两个选项:
get()
对字符进行无格式读取fin>>std::noskipws>>ch
默认情况下,流上的
操作符>>
在解析值之前跳过任何前导空格。例如,这允许您使用int i,j,k读取输入30 60 95
;fin>>i>>j>>k
(否则读取j
将失败,因为30
之后是空格,而不是整数)
如果您还想阅读空格,现在有两个选项:
get()
对字符进行无格式读取fin>>std::noskipws>>ch
标准输入函数
istream::operator>()
在执行输入之前跳过所有前导空格。如果需要获得空间,可以使用以下几个选项:
通过设置std::noskipws
标志,流将不会丢弃前导空格,并且std::ios_base::noskipws
将获得每个连续字符的值。请注意,只有当重载采用ch
(将为char
指定空格值)时,此操作才会成功。对于任何其他数据类型,这将不起作用:ch
while(fin>>std::noskipws>>ch) { // ... }
std::istream::get()
get()
while(fin.get(ch)) { // ... }
您还可以使用迭代器直接处理缓冲区<代码>标准::istreambuf_迭代器也不解析输入:std::istreambuf\u迭代器
std::copy(std::istreambuf_迭代器{fin}, std::istreambuf_迭代器{}, std::ostreambuf_迭代器{std::cout},
istream::operator>>()
在执行输入之前跳过所有前导空格。如果需要获取空格,可以使用以下几个选项:
通过设置std::noskipws
标志,流将不会丢弃前导空格,并且std::ios_base::noskipws
将获得每个连续字符的值。请注意,这仅在采用ch
的重载时才会成功(char
将获得空格的值)。对于任何其他数据类型,这将不起作用:ch
while(fin>>std::noskipws>>ch) { // ... }
std::istream::get()
get()
while(fin.get(ch)) { // ... }
您还可以使用迭代器直接处理缓冲区。std::istreambuf\u迭代器
也不会解析输入:std::istreambuf_迭代器
std::copy(std::istreambuf_迭代器{fin}, std::istreambuf_迭代器{}, std::ostreambuf_迭代器{std::cout},
如果你想从你的流(例如文件流)中读取每一个<代码> char ,你不应该使用<代码> > <代码>,而是考虑使用.< /p>
阅读更多关于不同方法的信息。特别是您正在使用的方法。请仔细注意它的设计工作原理;它使用空格作为分隔符,不存储空格
如果你想从你的流(例如文件流)中读取每一个<代码> char ,你不应该使用<代码> > <代码>,而是考虑使用.< /p>
这对我来说很有效。我在一个函数中设置了它,这样你就可以复制粘贴。它可以检测空间,也可以检测行中的变化。我用ASCII艺术进行了尝试,效果很好
void print2()
{
char ch;
std::fstream myStream("GameOver.txt", std::fstream::in);
while (myStream.get(ch))
{
std::cout << ch;
}
}
void print2()
{
char ch;
std::fstream myStream(“GameOver.txt”,std::fstream::in);
while(myStream.get(ch))
{
std::cout这对我来说很有效。我在一个函数中设置了它,这样你就可以复制粘贴。它可以检测空间,以及行中的变化。我用ASCII艺术进行了尝试,效果很好
void print2()
{
char ch;
std::fstream myStream("GameOver.txt", std::fstream::in);
while (myStream.get(ch))
{
std::cout << ch;
}
}
void print2()
{
char ch;
std::fstream myStream(“GameOver.txt”,std::fstream::in);
while(myStream.get(ch))
{
您的示例输出甚至没有显示问题。什么是h
void print2()
{
char ch;
std::fstream myStream("GameOver.txt", std::fstream::in);
while (myStream.get(ch))
{
std::cout << ch;
}
}