Mac でいくつかの .txt ファイルを作成しました (最初はそれが問題になるとは思いませんでしたが...)。別のコンピューターの (残念ながら) Visual Studio で作成しているアプリケーションでそれらを読み取ることができます。これらは基本的にレコードで満たされたファイルで、行ごとのエントリ数が上部に表示されます。
2
int int
age name
9 Bob
34 Mary
12 Jim
...
Mac で最初に作成した (そしてテストに成功した) コードで、このファイルと同様のファイルを読み取ろうとします。
Table TableFromFile(string _filename){ //For a database system
ifstream infile;
infile.open(_filename.c_str());
if(!infile){
cerr << "File " << _filename << " could not be opened.";
exit(1);
}
//Determine number attributes (columns) in table,
//which is number on first line of input file
std::string num;
getline(infile, num);
int numEntries = atoi(num.c_str());
...
...
つまり、これによりクラッシュが発生します。調べてみると、興味深い「文字列の文字の読み取りエラー」の問題がいくつか見つかり、numEntries
クレイジーな負のガベージ値が得られていることがわかりました。これは、最初の行から読むと「2」になるはずの「num」が、実際には「ÿþ2」になっていることが原因のようです。
少し調査したところ、これらの奇妙な文字は書式設定されているようです...おそらく Unicode/Mac 固有ですか? いずれにせよ、それらは問題であり、Mac で作成したテキスト ファイルを連携させ、Windows で Mac ターミナルと同じように動作させるための迅速かつ簡単な方法があるかどうか疑問に思っています。UNIXマシンに接続して、そこにtxtファイルを置き、unix2dosを実行して、VSに戻そうとしましたが、役に立ちませんでした...それでも行頭にそれらのシンボルがあります! Windows で入力ファイルを最初からやり直す必要がありますか? さまざまなプラットフォームのファイル内の文字に関して、目に見えるものと必ずしも得られるものとは限らないことを知って非常に驚いています...しかし、良い教訓になると思います.