所以我试图让用户输入将放入最大大小为50个字符串的数组的字符串。每当用户输入"停止"时,我希望循环停止并且阵列在那里切断。
然后我想将数组读回给用户。我尝试运行它并得到一个非常奇怪的错误。有人可以向我解释为什么这不起作用以及如何解决它?谢谢。
int main(int argc, const char * argv[]){
string array[50];
// Get's inputs for array
for(int i = 0; i < 50; i++){
cout << "Enter string: ";
getline(cin, array[i]);
if(array[i]== "stop"){
array[i] = "\0";
break;
}
}
// Reads inputs from array
for(int i = 0; i < sizeof(array); i++){
cout << array[i] << "\n";
}
return 0;
}
我不知道为什么我这么努力地投票?
答案 0 :(得分:3)
使用std::vector
完成任务。它有方法push_back()
,您可以在其中动态添加元素。您也可以通过调用vector.size()
轻松检查向量的大小。
int main(int argc, const char * argv[]){
vector<std::string> array;
// Get's inputs for array
for(int i = 0; i < 50; i++){
cout << "Enter string: ";
string line;
std::getline(cin, line);
array.push_back(line);
if(array[i]== "stop"){
array[i] = "\0";
break;
}
}
// Reads inputs from array
for(int i = 0; i < array.size(); i++){
cout << array[i] << "\n";
}
return 0;
}
在你的代码中,你必须实现一个计数器,用户做了多少输入。
答案 1 :(得分:0)
通常你会使用向量,但由于你没有达到本书的那一部分,我想他们希望你用C风格的数组解决它。
您可以像这样获得C风格数组的长度
int size = (sizeof(array)/sizeof(*array)
但是既然你知道条目的最大数量是50,那么当你到达单词stop时你必须停止,也许你想要这个
for(int i = 0; i < 50; i++){
if (array[i] == '\0')
break;
cout << array[i] << "\n";
}
答案 2 :(得分:-2)
我刚刚实现了一个循环来找出数组的长度。
// Determines how long the array is
for(int i = 0; i < 50; i++){
if(array[i] == "\0"){
break;
}
counter++;
}