новый парень здесь. Я пытаюсь изучить C++ с помощью Mac OS X, и у меня возникают серьезные проблемы с тем, что отладчик работает в Eclipse или Netbeans (не может получить gdb по какой-то сумасшедшей причине), поэтому решил попробовать свои силы в Xcode. У меня есть простая программа сортировки, но не знаю, как получить выходной файл для заполнения. Вот что я сделал до сих пор:
Вот код как написано:
#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 для создания выходного файла.
Проблема почти наверняка заключается в том, что вы не смотрите в рабочий каталог программы. Что там, где "Output.txt" создается, а IIRC по умолчанию он находится в каталоге Xcode, который создается для проекта в области поддержки приложений Xcode внутри вашей папки ~/Library.
Я полагаю, вы можете установить рабочий каталог в схеме. Вы также можете использовать Организатор, чтобы открыть папку, создаваемую Xcode для проекта.
Обратите внимание, что это влияет как на ваш Output.txt, так и на ваш Names.txt; std::ifstream
не откроет файл только потому, что вы добавили его в проект Xcode. Вам нужно либо использовать абсолютный путь, либо поместить файл в рабочий каталог.
Он должен быть создан в той же папке, что и Sort.cpp
Неа. Он будет создан в "текущем рабочем каталоге", с которым работает ваша программа. Различные IDE устанавливают, что это разные места. Если вы запустите свою программу из Terminal.app, тогда вы будете в любом месте, где находитесь, когда запускаете программу.
Я не могу найти файл Output.txt на своем компьютере
Поскольку местоположение по умолчанию находится где-то внутри файлов ~/Library, поиск в Finder будет найти файл только в том случае, если вы проверите опцию "папки поисковой системы" или что бы там ни называлось. Лучше просто посмотреть, что Xcode устанавливает текущий рабочий каталог в вашей схеме или в организаторе Xcode.