C++更改后删除文本文件中的空格

发布于 2024-12-18 05:05:42 字数 888 浏览 0 评论 0原文

好吧,我的简单程序遇到了另一个问题。我的程序获取文本文件,读取它,然后删除最后一个符号并输出包含更改的新文本文件。它按照我想要的方式执行所有操作,除了删除所有空格。有什么解决办法吗? 代码如下:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char symbols[10000];
    ofstream outFile("outFile.out");
    ifstream inFile("inFile.in");

    for(int i=0;i<10000;i++)
    {   
        inFile >> symbols[i];
    }       

    for(int j=0;j<10000;j++)
    {   
        if(symbols[j]=='\0')
        {       
            symbols[j-1] ='\0';
            break;          
        }               
    }       

    if(outFile.is_open())
    {   
        for(int l=0;l<10000;l++)
        {       
            outFile << symbols[l];
        }               
    }       

    inFile.close();
    outFile.close();
    return 0;
}

PS 我的意思是如果我给它一条短信 Hello world

它输出 Helloworl 空间神奇地消失了..

Okay, I've encountered another problem with my simple program. My program gets the text file, reads it, then deletes the last symbol and outputs the new text file with the changes. It does everything as I want except that it does delete all spaces. Any solutions for that?
Here's the code:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char symbols[10000];
    ofstream outFile("outFile.out");
    ifstream inFile("inFile.in");

    for(int i=0;i<10000;i++)
    {   
        inFile >> symbols[i];
    }       

    for(int j=0;j<10000;j++)
    {   
        if(symbols[j]=='\0')
        {       
            symbols[j-1] ='\0';
            break;          
        }               
    }       

    if(outFile.is_open())
    {   
        for(int l=0;l<10000;l++)
        {       
            outFile << symbols[l];
        }               
    }       

    inFile.close();
    outFile.close();
    return 0;
}

P.S.
I mean if I give it a text with
Hello world

it outputs Helloworl
the spaces magically disappear..

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

无人问我粥可暖 2024-12-25 05:05:42

>> 提取运算符与 char 类型一起使用时,会从输入文件中读取下一个非空白字符。因此,这会跳过输入中的所有空格。

您可以使用 noskipws 操纵器关闭此功能,如下所示:

inFile >> noskipws >> symbols[i];

或者,您可以避免使用 >> 运算符。例如,您可以使用 istream::read()

The >> extraction operator, when used with a char type, reads the next non-whitespace character from the input file. So, this skips all whitespace in your input.

You can use the noskipws manipulator to turn off this feature, like this:

inFile >> noskipws >> symbols[i];

Alternately, you can avoid using the >> operator. You could use istream::read() for example.

吖咩 2024-12-25 05:05:42

使用

inFile.unsetf(std::ios::skipws);

如果包含 iomanip,那么还有一个操纵器:

inFile >> std::noskipws;

Use

inFile.unsetf(std::ios::skipws);

There is a manipulator too, if you include iomanip:

inFile >> std::noskipws;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文