将字符串输入到多维数组中

Inputting string into multidimensional array

本文关键字:数组 字符串 输入      更新时间:2023-10-16

我正在尝试制作一个数组来容纳多个用户输入字符串,我疲倦的结构和动态数组,并且不起作用

我尝试制作一个固定字符串的结构,并尝试制作结构数组,但它不起作用

#include <iostream>
#include <string>
#include <limits>

using namespace std;
int main()
{
    int rows;
    cin >> rows;
    string **arr = new string*[rows];
    for( int i = 0; i < rows; ++i)
    {
        arr[i]= new string[1];
    }
    for(int i = 0; i < rows; ++i)
    {
        getline(cin, arr[i][0]);
        cin.clear();
        cin.ignore(numeric_limits<streamsize>::max(), 'n');
    }

    for(int i = 0; i < rows; ++i)
    {
        cout << arr[i][0] << 'n';
    }

    for( int i = 0; i < rows; ++i)
    {
        delete [] arr[i];
    }
    delete [] arr;
return 0;
}

它允许行 1输入,然后崩溃

使用std :: vector and std:字符串类型轻松完成作业:

#include <iostream>
#include <string>
#include <limits>
#include <vector>
using namespace std;
int main()
{
    int rows;
    cin >> rows;
    std::vector<std::string> vec;
    std::string s;
    // flush cin
    std::getline(std::cin, s);

    for (int i = 0; i < rows; ++i)
    {
        std::getline(std::cin, s);
        vec.push_back(s);
    }

    for (int i = 0; i < rows; ++i)
    {
        cout << vec[i] << 'n';
    }
    return 0;
}
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), 'n');

应该在错误的情况下进行,而不是在常规情况下进行。

demo