私はかなり単純な演習 (宿題) を書いていますが、ほとんどは機能しますが、cinでセグメンテーション違反が発生することがあります。関連するコードは次のとおりです。
int main()
{
std::string str = "";
std::cout << "Please select the desired operation:\n";
std::cout << "(A): Generate Decompositions\n";
std::cout << "(B): Generate Acceptable Compositions from S1.txt and S2.txt\n";
std::cout << "cout"; //debug statement
std::cin >> str;
std::cout << "cin"; //debug statement
std::cout << str;
char resp = str.at(0);
std::cout << "resp"; //debug statement
...
}
セグメンテーション違反が発生しますstd::cin >> str
(「デバッグステートメント」が出力されるため、これを知っています)。しかし、奇妙なことに、「b」を入力したときにのみ取得できます。「a」または「a」で始まる任意の単語を入力すると、正常に機能します。a または b 以外の文字、または a または b 以外の文字で始まる文字を入力すると、終了します (想定どおり)。しかし、「b」または「b」で始まる任意の単語を入力すると、Segfault が発生します。毎回。なんで?