我目前有一个函数,它接受4个字符的数组,并根据该字符序列返回另一个值。
我想要的是让用户输入一整行字符,然后创建一个循环来遍历每个“字符子组”,然后返回所有这些字符的结果。
我最初的想法是以某种方式使用push_back继续将数组添加到向量中。
我不知道整个数组会有多长,但它应该是3的乘积。
作为一个例子,我现在可以做到:
char input [4] ;
cin >> input;
int i = name_index[name_number(input)];
cout << name[i].fullName;
但我想要的是用户ti一次输入多个名称缩写
答案 0 :(得分:2)
我会改变你的样本:
char input [4] ;
cin >> input;
int i = name_index[name_number(input)];
cout << name[i].fullName;
对此:
string input;
cin >> input;
const int i = name_index[name_number(input)];
cout << name[i].fullName;
然后您可以开始使用矢量来跟踪多个输入:
vector<string> inputs;
string line;
while (cin >> line)
{
if (line == "done")
break;
inputs.push_back(line);
}
for (unsigned int i = 0; i < inputs.size(); ++i)
{
cout << "inputs[" << i << "]: " << inputs[i] << endl;
//const int index = name_index[name_number(inputs[i])];
//cout << name[index].fullName;
}
您要求line
的解释。第while (cin >> line)
行尝试从标准输入中获取文本并将其放入line
。默认情况下,它会在遇到空格(空格,制表符,返回等)时停止。如果成功,则执行while
循环的主体,然后将输入内容添加到vector
。如果没有,那么我们假设我们处于输入结束并停止。然后我们可以处理vector
。 (在下面链接的代码中,我只是输出它,因为我不知道name_index
或name_number
是什么。
答案 1 :(得分:-1)
cin的工作方式是,它会接受任意数量的输入并用空格分隔它们,当你要求特定输入时它会提示用户输入,然后只取第一个字符串(直到空格)。如果之后还有其他输入,则另一个cin >> input
将只检索该值而不再提示用户。当只剩下换行符时,您可以判断何时到达输入的实际结束。此代码应允许您键入由空格分隔的多个字符串,然后在用户输入文本后立即处理它们:
char input[4];
do // Start our loop here.
{
// Our very first time entering here, it will prompt the user for input.
// Here the user can enter multiple 4 character strings separated by spaces.
// On each loop after the first, it will pull the next set of 4 characters that
// are still remaining from our last input and use it without prompting the user
// again for more input.
// Once we run out of input, calling this again will prompt the user for more
// input again. To prevent this, at the end of this loop we bail out if we
// have come accros the end of our input stream.
cin >> input;
// input will be filled with each 4 character string each time we get here.
int i = name_index[name_number(input)];
cout << name[i].fullName;
} while (cin.peek() != '\n'); // We infinitely loop until we reach the newline character.
编辑:另外,请记住,仅向input
分配4个字符并不能解释最终将添加的字符串字符'\0'
的结尾。如果用户输入4个字符,那么当它将字符串分配给input
时,它实际上将访问不良内存。有4个字符+ 1个结束字符,这意味着您需要为input
分配至少5个字符。最好的方法是使用std::string
,因为即使用户输入超过4个字符,它也会正确调整大小。