0

ここに新しい男。私は Mac OS X を使用して C++ を学習しようとしていますが、デバッガーを Eclipse または Netbeans で動作させるのに深刻な問題が発生しているため (なんらかの理由で gdb を取得できません)、Xcode を試してみることにしました。簡単な並べ替えプログラムを作成しましたが、出力ファイルを作成する方法がわかりません。これまでに行ったことは次のとおりです。

  1. 名前のリストを作成し、Sort フォルダーに Names.txt として保存しました。
  2. Xcode の「スキームの編集」タブに入り、2 つの引数 Names.txt と Output.txt を追加しました。
  3. エラーや問題なしでプログラムを実行しましたが、Output.txt は作成されません。
  4. Xcode で、「並べ替えにファイルを追加」で Names.txt を取り込み、空の Output.txt ファイルを作成して、Sort フォルダーに保存しました。次に、Output.txt も Xcode に取り込みました。
  5. プログラムを実行しても、空の Output.txt ファイルが残っています。

書かれたコードは次のとおりです。

#include <iostream>
#include <fstream>
#include <string>
using namespace std;

// Constants
#define BUFFER_SIZE 50
#define ARRAY_SIZE 20

// Global variables
int numElements = 0;

//function prototypes
void sort(string elements[]);  // sort an array of strings in ascending order

void swap(string& s1, string& s2); // swap s1 and s2

int main(int argc, char *argv[])
{
    char buffer[BUFFER_SIZE];
    string listOfNames[ARRAY_SIZE];

    string inputFileName;
    string outputFileName;
    ifstream inputFile;
    ofstream  outputFile;

    if(argc != 3) {
        cout << "Error: Please enter input and output files ";
        cout << "as command line arguments !" << endl;
    }
    else {
        inputFileName = argv[1];
        outputFileName = argv[2];
        inputFile.open(inputFileName.c_str());
        outputFile.open(outputFileName.c_str());

        // Read names from input file and store into array
        while(!inputFile.eof() && numElements < (ARRAY_SIZE - 1)) {
            inputFile.getline(buffer, BUFFER_SIZE);
            string p = string(buffer);
            listOfNames[numElements] = p;
            numElements++;
        }
        // Sort elements in array
        sort(listOfNames);
        // Print elements in array to output file
        for(int i = 0; i < numElements; i++) {
            outputFile << listOfNames[i] << endl;
        }
        inputFile.close();
        outputFile.close();
    }

    cout << "Sorting done!!!" << endl;

    return 0;
}// end main


// perform bubble sort
// sort names in ascending order
void sort(string elements[]) {
    bool change = true;

    while(change) {
        change = false;
        for (int i = 0; i < (numElements - 1); i++) {
            if (elements[i] > elements[i + 1]) {
                swap(elements[i], elements[i+1]);
            change = true;
            }
        }
    }
}

// swapping 2 string
void swap(string& s1, string& s2) {
    string temp = s1;
    s1 = s2;
    s2 = temp;
}

コードは Eclipse で動作するため、正しいと確信しています...Xcode で出力ファイルを生成する方法がわかりません。

4

1 に答える 1