创建字符串的 2D 数组,用户将在C++中输入值

Creating 2D array of strings, values will be entered by user in C++

本文关键字:C++ 输入 用户 字符串 2D 数组 创建      更新时间:2023-10-16

我正在尝试创建一个字符串的 2D 数组,其中包括用户输入的值。

我在Visual Studio 2013中遇到了一些错误,这些错误大致如下:

no suitable conversion function found from 'std::string' to 'const char*' exists.

这是我正在尝试做的:

#include <iostream>
#include <string>
using namespace std;
int main() {        
    string stringOne, stringTwo, stringThree, stringFour, stringFive;
    const char *myStrings[][5] = { stringOne,
                                   stringTwo,
                                   stringThree,
                                   stringFour,
                                   stringFive };
    return 0;
}

你应该在C++中使用向量而不是数组。您可以像这样初始化嵌套向量:

std::vector<std::vector<std::string>> v = {
    { stringOne, stringTwo, stringThree, stringFour, stringFive }
};

如果要从用户处获取输入,则不必使用五个不同的字符串变量。相反,您可以使用push_back来增加矢量的大小。像这样:

std::vector<std::vector<std::string>> v(5);
std::size_t row = 0;
std::size_t column = 0;
std::string input;
while (std::cin >> input)
{
      if (row++ < 5)
           v[column].push_back(input);
      else
      {
           row = 0;
           column++;
      }
}

很难理解你想要什么。也许你的意思是以下内容:)

#include <vector>
#include <array>
#include <string>
//...

std::vector<std::array<std::string, 5>> myStrings;

下面是此方法的示例

#include <iostream>
#include <vector>
#include <array>
#include <string>
int main()
{
    std::vector<std::array<std::string, 5>> myStrings;
    myStrings.push_back( { "FirstString", "SecondString", "ThirdString", 
                           "FourthString", "FifthString" } );
    std::string firstString( "FirstString" );
    std::string secondString( "SecondString" );
    std::string thirdString( "ThirdString" );
    std::string fourthString( "FourthString" );
    std::string fifthString( "FifthString"  );
    myStrings.push_back( { firstString, secondString, thirdString, 
                           fourthString, fifthString } );
    for ( const auto &a : myStrings )
    {
        for ( const auto &s : a ) std::cout << s << ' ';
        std::cout << std::endl;
    }
    return 0;
}

输出为

FirstString SecondString ThirdString FourthString FifthString 
FirstString SecondString ThirdString FourthString FifthString 

因此,您将获得一个包含五列类型为 std::string 的对象的列表