C++ 读取数组格式输入

C++ 读取数组格式输入,c++,arrays,input,C++,Arrays,Input,请您帮助获取以下格式的输入: {1,2,3,4} 并将其转换为带整数的数组 int * ns = new int [n]; cin >> ns; 这是行不通的。我应该如何更改它?使用名称空间std; using namespace std; typedef istream_iterator<int> It; vector<int> v; copy(It(cin), It(), back_inserter(v)); typedef是流迭代器

请您帮助获取以下格式的输入:

{1,2,3,4}
并将其转换为带整数的数组

    int * ns = new int [n];
    cin >> ns;
这是行不通的。我应该如何更改它?

使用名称空间std;
using namespace std;
typedef istream_iterator<int> It;
vector<int> v;
copy(It(cin), It(), back_inserter(v));
typedef是流迭代器; 向量v; 复制(It(cin),It(),back_inserter(v));
您需要逐个读取元素并将它们存储到数组中

int aNoOfElements = 0;
cin >> aNoOfElements;
int *anArray = new int[ aNoOfElements];     //allocate memory to hold aNoOfElements

for( int i = 0; i < aNoOfElements; i++ )
{
     cin >> anArray[ i ];                   // Read each input
}
int-anoofements=0;
cin>>其他元素;
int*anArray=新的int[其他元素]//分配内存以保存其他元素
for(int i=0;i<其他元素;i++)
{
cin>>数组[i];//读取每个输入
}

您需要解析输入。将输入作为字符串,然后检查格式是否符合您的要求。您可以使用的算法:

  • 检查第一个字符是否为“{”
  • 如果是,则初始化一个变量(比如temp)以保存将要获取的数字(作为字符串),并使用空字符串,否则将出错
  • 读下一个字符
  • 如果它在“0”和“9”之间,则将其附加到temp并返回步骤3,否则返回步骤5
  • 如果是逗号或“}”,则将temp转换为整数并将其放入数组中,用空字符串重新初始化temp,否则出错
  • 仍然在同一个字符上,如果是逗号,则返回步骤3,否则完成
  • 我希望您能将上述算法转化为工作代码,祝您好运:)


    请告诉我,如果你发现了一个错误

    因为它是C++,答案的第一部分是“使用<代码> STD::向量< /代码>而不是<代码> new int [n] < /代码>”不,用户输入了你可以读取我所使用的函数的文档。它只是将std::cin中的所有s复制到向量中。当然,OP对输入要求不是很清楚……他/她应该更详细地解释如何使其支持逗号。或者完全用另一种方式写!我已经试过密码了。它读取元素,直到从标准输入输入非数字、非\n字符。例如,如果我键入
    12\n34\n56\n,
    ,v将包含{12,34,56}编辑:
    CTRL+D
    也可用于终止输入。