行数取决于用户输入

时间:2014-02-02 09:32:35

标签: c++

我正在尝试创建可以键入的行数,具体取决于用户输入。

所以它要求我输入多行,最多100行,当我输入12时,我想创建12行,我想输入每行,但每行可以有1行和最多100个字符英文字母。

之后我需要对输入这些​​行的所有数据做一些事情,就像一个表格......但我稍后会这样做,这是我的代码,请帮忙

PS,它显示我在VOID行中的错误....

 #include <iostream>

void riadkov (int arg[], int dlzka_r){
      char dlzka_r[100];
      riadkov(ulohy, dlzka_r);

int main(){
using namespace std;

int ulohy;

     cout << "zadaj pocet uloh: ";
     cin >> ulohy;
     if (ulohy >= 1 && ulohy <= 100){


     cout << riadkov[ulohy] << endl; }
     }else{
     cout << "minimalne 1 uloha, maximalne 100 uloh!" << endl;

     }
system("pause");   
}

1 个答案:

答案 0 :(得分:1)

正如亚历克斯所说,你无法在另一个内部创建一个函数,你应该让riadkov成为一个lambda函数:

auto riadkov = [](int arg[], in dkzka_r) -> void {
    // implementation
}

其次,因为您尝试动态创建所需的行数是:

char **data; // but you 'll have to malloc/new yourself

如果您不需要使用char,则可以选择字符串容器

编辑:

编译并运行此示例(对于char ** ... rtfm)

#include <iostream>
#include <vector>
#include <string>

int _tmain(int argc, _TCHAR* argv[])
{
    std::vector<std::string> data; // contains a sequence of strings
    std::size_t num(0); // number of rows
    do 
    {
        std::cout << "Enter number (1 to 100) of rows : " ;
        std::cin >> num;
    } while (num < 1 || num > 100); 

    for (std::size_t i(0); i < num; ++i)
    {
        data.push_back(std::string()); // add an empty string
        std::cout << "\nEnter data for row " << i << " : ";
        std::cin >> data.back(); // fill the empty string with user input
        if (data.back().length() > 100) {
            std::cout << "Only 1 to 100 characters are allowed";
            data.pop_back(); // remove the last string
            --i; // the ith row will be prosessed again
        }
    }

    // now to print what you inserted in the vector
    std::cout << "Printing contents of the vector\n";
    for (std::size_t i(0), ie(data.size()); i < ie; ++i)
    {
        std::cout << i << ". :" << data[i] << std::endl;
    }

    return 0;
}