我有一個非常簡單的函數,它應該讀取一個txt文件並將所有行返回一個類型字符串的向量。我已經使用調試器進行了幾次調試,並且我注意到唯一的事情是「fileName」的值在ifstream聲明的行上發生了變化。我究竟做錯了什麼??謝謝。在運行時改變C++參數
vector<string> readFile(char* fileName)
{
vector<string> fileLines;
fileLines.clear();
string line;
ifstream myfile (fileName);
if (myfile.is_open())
{
while (myfile.good())
{
getline (myfile,line);
fileLines.push_back(line);
}
myfile.close();
}
return fileLines;
}
//////////////////////////////////
我有這個功能應該返回當前目錄中所有txt文件的文件名。
vector<char*> getFileList()
{
vector<char*> fileNames;
fileNames.clear();
WIN32_FIND_DATA FindFileData;
HANDLE hFind = INVALID_HANDLE_VALUE;
char currentPath[_MAX_PATH];
getCurrentPath(currentPath);
strncat(currentPath, "\\*", 3);
if (hFind = FindFirstFile(currentPath, &FindFileData))
{
string fileExtension = getExt(FindFileData.cFileName);
if (fileExtension == "txt" || fileExtension == "TXT")
{
fileNames.push_back(FindFileData.cFileName);
}
while(FindNextFile(hFind, &FindFileData) != 0)
{
string fileExtension = getExt(FindFileData.cFileName);
if (fileExtension == "txt" || fileExtension == "TXT")
fileNames.push_back(FindFileData.cFileName);
}
}
return fileNames;
}
這就是功能將如何被稱爲:
vector<char*> inputFileList = getFileList();
if (inputFileList.size() > 0)
{
for (int a=0; a<inputFileList.size(); a++)
{
fileLines = readFile(inputFileList[a]);
}
}
您是否在編譯時啓用了優化? – 2011-04-12 11:27:51
你的代碼是不夠的。更好地發佈你的函數調用調用代碼。 – karthik 2011-04-12 11:30:05
你的意思是什麼優化?我正在和Mingw編譯。 Thx – Tom 2011-04-12 11:30:14