2015-10-18 36 views
-5

这可能是一个基本的问题,但我找不到任何地方一个合适的回答...输入字符串,但字符串用户的长度要输入不知道我

Q)假设我声明字符串[10],而我想从用户的输入,但我不知道用户想要输入 我申请什么字符串的长度是下面的循环取输入:

#include<iostream> 
using namespace std; 
{ 
    int a[10],i; 
    for(i=0;i<10;i++) 
    { 
     cin>>a[i]; 
    } 
} 

让用户只想输入一个长度为5的字符串,但使用上面的循环,编译器只会在字符串长度为10时迭代...

此外,我不允许向用户询问他想输入的数组长度。

+3

将int数组声明为一个char数组或一个字符串(C++),并简单地将cin >> string; –

+6

您在标签列表中遗漏了一些语言。 –

+0

他是正确的,编辑出算法/ java标记,大多数流量将来自java标记 –

回答

0

你有两个选择:

  1. 使用std::string和输入裁剪后的字符串的最大尺寸(如果 必要)。
  2. 使用OS API一次读取一个字符,直到收到终止的 字符。

C++的输入功能的std::stringchar [],直至终止条件被满足将从输入流中读取字符; 不考虑字符数量。使用标准的多字符流输入功能没有限制数量的方法。因此,您需要一个动态数据结构来读取数据,然后根据需要裁剪到您想要的数量。

您可以一次读取一个字符,一次循环,直到输入终止字符或达到数量限制。除非您非常小心,否则标准字符输入函数可能会忽略空格或缓冲区字符,直到收到终止字符。

如果您想要更多或更精细地控制输入,请使用OS API读取循环中的字符。您可能需要echo将字符输出到输出流。