我正在写一个相当简单的练习(家庭作业),大部分都有效,但是它有时在 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”开头的单词,它就会出现段错误。每一次。为什么?
最佳答案
I know this because of what "debug statements" are output"
您发布的代码看起来不错。
因为你的输出语句没有<< endl
最后,某些输出可能仍会在段错误时被缓冲。写出 endl
阻塞直到输出被刷新,所以添加 << endl
很可能会帮助您更接近坠机的实际位置。
关于c++ - 为什么我在 cin 上出现段错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16227680/