【发布时间】:2016-02-08 07:00:59
【问题描述】:
在我的程序中,我试图从用户输入行中获取实际名称,然后将它们存储到向量中。
我编写了自己的代码,但运行时错误告诉我“字符串下标超出范围”。
这是我的代码
const int LEN = 100;
struct Case{
public:
int No_People;
vector<string> Names;
vector<string> Results;
void Set_Data(){
cin >> No_People;
int Size = No_People;
char Line[LEN];
for (int i = 0; i < Size; i++){
cin.getline(Line, LEN);
Names.push_back(Line);
}
}
}
【问题讨论】:
-
为什么你的字符串使用字符数组而不是
std::string呢?使用std::string和std::getline。也不需要临时变量Size,可以直接使用No_People。 -
至于你的错误,哪里你得到错误?您在代码的哪一行显示?
-
选择您标记的语言之一......
-
@JoachimPileborg 如果我只使用字符串而不是 char 数组,我得到一个错误,无法将参数 1 从字符串转换为 char*。我认为这是因为 getline 函数将数组的 char 作为参数。这是一个运行时错误,我已经编辑了帖子。
-
@MahmoudAnwer,请参阅下面的答案以获得解释。
标签: c++