为什么下面的C++代码给出了这个特定输入的分段错误


int main(){
int n;
cin>>n
cin.ignore(32767,'n');
string arr[n],temp;
for(int i=0;i<n;i++){
getline(cin,temp);
arr[i]=temp;
}
}

输入
10
游客
petr
wjmzbmr
yeputons
vepifanov
scottwu
oooooooooo
订阅者
rowdark
坦克工程师

我的代码对所有其他输入都运行良好(即使n=10(,但对于这个特定的输入(如上所述(,它给出了分段错误。

您的代码不可能按原样编译,并且您使用的是C++不支持的VLA:s,因此很难重现您的问题。试着使用C++容器来避免它,比如std::vector。示例:

#include <iostream>
#include <vector>
int main() {
int n;
std::cin >> n;
std::cin.ignore(); // discard the 'n' still in the buffer
// declare a standard C++ container, like a vector of strings
std::vector<std::string> arr(n);
for(int i=0; i<n; ++i) {
std::getline(std::cin, arr[i]);
}
std::cout << "VALUES:n";
for(auto& s : arr) {
std::cout << s << "n";
}
}

相关内容

  • 没有找到相关文章

最新更新