Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Read文件没有从我的文本文件中读取空白空间吗? 我在一个文本文件中阅读,发现它不会打印单词之间的空白字符。我希望每次读取一个字符,然后将该字符打印到输出窗口。Read将读取该文件,但不显示空白,并且我无法查明为什么空白区域被跳过。 问题:为什么我的阅读不读取我的测试文件中的空白字符?< /强> _C++ - Fatal编程技术网

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))
      {
      // ...
      }
      
    • std::istreambuf\u迭代器

      您还可以使用迭代器直接处理缓冲区<代码>标准::istreambuf_迭代器也不解析输入:

      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;        
            }
        }