这可能是一个基本问题,但我无法在任何地方找到合适的答案......
Q)假设我声明了一个字符串a [10],我想从用户输入它,但我不知道用户想要输入的字符串的长度 我应用的是以下循环来获取输入:
#include<iostream>
using namespace std;
{
int a[10],i;
for(i=0;i<10;i++)
{
cin>>a[i];
}
}
让用户希望只输入长度为5的字符串,但是使用上面的循环,编译器只会在字符串长度为10时进行迭代...
此外,我不允许向用户询问他想输入的数组的长度。
答案 0 :(得分:0)
您有两种选择:
std::string
并将字符串裁剪为最大尺寸(如果
必要的)输入后。 std::string
或char []
的C ++输入函数将从输入流中读取字符,直到满足终止条件为止; 不考虑字符数量。使用标准的多字符流输入功能,没有限制数量的方法。因此,您需要一个动态数据结构来读取数据,然后根据需要裁剪到您想要的数量。
您可以循环读取一个字符,直到输入终止字符或达到数量限制。除非您小心,否则标准字符输入函数可能会忽略空格或缓冲字符,直到收到终止字符。
如果您想要更多或更精细地控制输入,请使用OS API读取循环中的字符。您可能必须回显字符到输出流。