Рабочая среда
- Windows 7 Ultimate X64 SP1
- Microsoft Visual Studio 2008 SP1 (C ++)
Текстовый файл
Моя программа разбирает чистый текстовый файл и работает. следующий код - это тот текстовый файл.
/*main.txt*/
_function main()
{
a = 3; //a is 3
b = "three";
c = 4.3; //automatic typecast
_outd(b+"3\n");
_outd(b+a+c);
d = a/c;
_outd("\n"+d+"\n"); ///test commantation
/*//
comment
*/
}
это какой-то простой сценарий c-styple, который можно редактировать в текстовом редакторе, таком как блокнот (содержание в этом тексте не важно)
код
Текст открытый код.
std::wstring wsFileName; //from
char* sz_FileName = new char[wsFileName.size()+1];
ZeroMemory(sz_FileName,sizeof(char)*(wsFileName.size()+1));
//////////////////////////////////////////////////////////////////////////
//for using 'fopen', change wsFileName to ascii
WideCharToMultiByte(CP_UTF8,0,wsFileName.c_str(),-1,sz_FileName,wsFileName.size(),NULL,NULL);
//open ascii text file
FILE* fp=fopen(sz_FileName,"rt");
std::string ch;
while(!feof(fp))
{
ch.push_back(fgetc(fp)); //get textfile in ascii
}
Задача
Просмотр std::string ch
в отладчике, который:
Это точно такой же, как я ожидал, результат в Windows 7. И выпущенный исполняемый файл тоже работает нормально. Но в Windows XP SP3 это вызывает ошибку во время выполнения.
Я копался всю ночь и наконец нашел его. Я установил Visual Studio 2008 SP1 на Windows XP SP3 и отладил его.
смотрит std::string ch
:
Я догадался, что "знак новой строки" является причиной сбоя этой программы в Windows XP. и я угадал эту проблему на основе «кодировки текста между Windows 7 и Windows XP». поэтому я делаю новый текст скрипта, используя блокнот Windows XP. и попробуй разобрать. Но Windows XP имеет ту же проблему. я знаю, что: проблема возникает не только текстовый файл orignated windows 7, но и новый сгенерированный текст в windows xp. я не знаю, почему проблема возникает.
Вопрос
чистый текстовый файл (сгенерированный с помощью блокнота, editplus, ultraedit и других ...), который генерировал любые окна os (xp & vista & 7), как моя программа может прочитать этот текст с тем же результатом?
Я хочу, чтобы каждый пользователь мог редактировать скрипт для управления и настройки моей программы в своей собственной ОС, используя свой собственный простой текстовый редактор.