如何将数字从一个文本文件复制到另一个文本文件,但将其作为下一个数字?

时间:2019-02-17 10:04:52

标签: c++

我需要从一个文本文件中复制数字,然后在另一个文本文件中输入,但将它们作为下一个数字,例如1-> 2 3-> 4 ... 9-> 0 我已经弄清了要复制的部分,但无法弄清楚如何使下一个成为一个数字。

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main ()
{
     ifstream infile("input.txt");
     ofstream outfile("output.txt");
     string content = "";`
     int i;`

     for(i=0 ; infile.eof()!=true ; i++) // takes content 
         content += infile.get();

     i--;
     content.erase(content.end()-1);     // erase last character

     cout << i << " characters read...\n";
     infile.close();

     outfile << content;                 // output
     outfile.close();
     return 0;
}

我输入1 2 3 4 5并期望输出为2 3 4 5 6

3 个答案:

答案 0 :(得分:1)

您可以检查输入字符是否为数字,然后将其增加,例如:

    for (i = 0; infile.eof() != true; i++)// takes content 
    {
        char currentChar = infile.get();

        if (isdigit(currentChar))
        {
            currentChar++;
        }

        content += currentChar;
    }

答案 1 :(得分:1)

扩展Oded Radi的答案,

如果您希望9变为0(如您所述),则需要进行处理,这是一种方法:

for (i = 0; infile.eof() != true; i++) // takes content 
{
    char currentChar = infile.get();

    if (isdigit(currentChar))
    {
        currentChar = (((currentChar - '0') + 1) % 10) + '0';
    }

    content += currentChar;
}

答案 2 :(得分:1)

如果输入用空格分隔,则循环可以很简单:

int value;
while (input_file >> value)
{
  value = value + 1;
  output_file << value << " ";
}

另一个循环可能是:

int value;
while (input_file >> value)
{
    value = (value + 1) % 10;
    output << value << " ";
}

上面的循环将数字限制为0到9。