在文件流中添加值

时间:2015-08-21 00:52:58

标签: c++ filestream

例如我有一个数字记事本。

  

1 2 3 4 5

然后我想在第三行添加4,即3,这样它的新值将是

  

1 2 7 4 5

问题是我该怎么做? 请帮帮我谢谢!



string add;
	cout<<"Enter value to be added: ";
	cin>>add;
	fstream file;
		file.open("quantity.txt");
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

你的问题不够准确,但我认为这与你的期望相符:

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

int main(int argc, const char *argv[]) {
    std::string filename;
    std::cout << "Enter name of file to modify: ";
    std::cin >> filename;

    std::ifstream inputFile;
    inputFile.open(filename);
    if(inputFile.fail()) {
        std::cout << "Unable to open file \"" << filename << "\" for reading\n";
        return 1;
    }

    unsigned offset;
    std::cout << "Enter offset to modify: ";
    std::cin >> offset;

    int toAdd;
    std::cout << "Enter value to be added to line #" << lineNumber << ": ";
    std::cin >> toAdd;

    std::vector<int> nums;
    for(;;) {
        int num;
        inputFile >> num;
        if(inputFile.eof())
            break;

        nums.push_back(num);
    }

    inputFile.close();

    if(offset >= nums.length()) {
        std::cout << "Offset " << offset << " out of bounds!\n";
        return 1;
    }

    nums[offset] += toAdd;

    std::ofstream outputFile;
    outputFile.open(filename);
    if(outputFile.fail()) {
        std::cout << "Unable to open file \"" << filename << "\" for writing\n";
        return 1;
    }

    for(int num : nums)    // Warning: C++11
        outputFile << num << ' ';

    outputFile.close();
}