我的输出文件没有从输入文件中读取空格

时间:2015-03-30 05:11:30

标签: c++

我无法让我的程序读取输入文件中的空格,我是新手和一般的对象所以任何帮助都会受到赞赏。

我的输入文件是:你好我的名字是皮埃尔。我喜欢编码。
我的输出文件是:HellomynameisPierre.Iliketocode。

我的另一个问题是如何检查我的字符串是否有多个空格,如果有,则只用一个空格替换它。

#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

void clean_file(ifstream& fin, ofstream& fout);

int main()
{
    ifstream fin;
    ofstream fout;
    clean_file(fin, fout);
}

void clean_file(ifstream& fin, ofstream& fout)
{
    fin.open("string.txt");
    if (fin.fail())
    {
        cout << "File could not open.";
        exit(1);
    }
    fout.open("cleanString.txt");
    if (fout.fail())
    {
        cout << "File could not open.";
        exit(1);
    }
    char line;
    while (fin >> line)
    {
        fout << line;
    }


    fin.close();
    fout.close();
}

编辑:我将(fin&gt;&gt;行)更改为(fin.get(line)),现在可以正常工作了。谢谢。

#include <fstream>
#include <iostream>
#include <cstdlib>

using namespace std;

void clean_file(ifstream& fin, ofstream& fout);

int main()
{
    ifstream fin;
    ofstream fout;
    clean_file(fin, fout);
}

void clean_file(ifstream& fin, ofstream& fout)
{
    fin.open("string.txt");
    if (fin.fail())
    {
        cout << "File could not open.";
        exit(1);
    }
    fout.open("cleanString.txt");
    if (fout.fail())
    {
        cout << "File could not open.";
        exit(1);
    }
    char line;
    while (fin.get(line))
    {
        fout << line;
    }


    fin.close();
    fout.close();
}

1 个答案:

答案 0 :(得分:2)

这个问题与这个问题非常相似:

Reading from ifstream won't read whitespace

请尝试使用(fin >> line)功能:

,而不是使用get()
(fin.get(line))

试一试。