c++ - 将字符串输入多维数组

标签 c++

我正在尝试制作一个包含多个用户输入字符串的数组,我已经厌倦了结构和动态数组,但它不起作用

我尝试制作一个包含字符串的结构,并尝试制作结构数组但没有成功

#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;
}

它允许 rows + 1 输入然后崩溃

最佳答案

使用 std::vector 和 std:string 类型轻松完成工作:

#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;
}

关于c++ - 将字符串输入多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57265938/

相关文章:

c++ - 水粒子模型

c++ - 系统错误 122 - 调用 WriteMsgQueue() 时出现 ERROR_INSUFFICIENT_BUFFER

c++ - 如何使用 tolua++ 将 lua 字符串(二进制)传递给 c++

c++ - 无法从 Mac 上的 C++ 程序读取文件

c++ - Visual Studio 2015:std::make_unique 中没有签名/未签名不匹配警告?

c++ - 什么类型的转换适合这里?

c++ - 如何使用 Xcode 在 C++ 库中使用 __IPHONE_4_0 定义?

c++ - 将继承类对象的 vector 传递给需要基类 vector 的函数

Mac 上的 C++ 库无法使用 g++ my_program.cpp -o my_program 进行编译

c++ - 如何在 xcode 中启用 _LIBCPP_DEBUG_LEVEL>=2