
MacBook の Xcode で C++ コードを書くときに、奇妙な問題が発生しています。Windows ユーザーが問題なく実行できたので、コードに欠陥がないことはわかっていますが、どういうわけか、ほとんどの場合、出力が入力と一致しません。Xcode を再インストールしようとしましたが、うまくいきませんでした。実行しているコードは次のとおりです。
#include <string>
#include <iostream>
int main() {
std::string test = "";
while (std::cin >> test) {
std::cout << test << "\n";
}
return 0;
}
Xcode 内のコンソールを使用してユーザー入力を行っています。以下は、取得した出力の例です。
入力: 1+(2+2)
出力: 1+()2+2
入力: 2*(-(8/2))
出力: 2*()()-8/2
コメント: ボックスには疑問符記号が表示されますが、ここに貼り付けると表示されないようです。
ご協力いただければ幸いです。
答え1
カーソル キーに関するコメントで、問題が明確になりました。
通常、C/C++ ランタイム stdio ライブラリは、カーソルなどの特殊キーの処理にシステムのターミナル実装を使用するため、プログラムはいわゆる「調理済み」のターミナル入力を受け取り、奇妙なものはすべてフィルターされます。
残念ながら、XCode 内のコンソール ウィンドウは適切なターミナルではないため、いくつかのものが通過します。
これは、XCode とそのコンソール ウィンドウに固有のものです。コンパイルされたプログラムを通常のターミナル ウィンドウから実行した場合は、このようなことは発生しないはずです。そこでカーソルを押すと、画面に奇妙な文字が生成されますが、std::cin には届きません。