【问题标题】:Display sequential variable's value with while loop使用 while 循环显示顺序变量的值
【发布时间】:2017-08-25 14:14:07
【问题描述】:

我做了一个程序:

char a1[100]="Ques 1" , a2[100]="Ques 2" , a3[100]="Ques 2";
int count=1;
while (count<=3)
{
  cout << ....;
}

现在我想一个接一个地显示问题。那么我在......的地方输入什么? 喜欢

cout << a(count);

让问题按顺序显示。

提前致谢

【问题讨论】:

  • 你对std::string有什么异议?
  • 我是初学者,不知道函数。请给我语法。
  • for (const auto &amp;q : {a1, a2, a3}) { std::cout &lt;&lt; q &lt;&lt; '\n'; }。这个问题应该由book回答。
  • 更好的是,a1a2a3 应该是一个单独的数组/容器/集合开始(基本上在任何编程语言中,而不仅仅是 C++)。肯定会花更多时间阅读编程书籍。他们应该介绍所有这些重要的事情。
  • 更合适的是为您的问题使用字符串数组而不是离散字符数组,a1a2a3 等。请参阅this article 了解不同的方法,但是方法#3 是最“C++ 方法”。

标签: c++ cout


【解决方案1】:

您为每个问题使用了不同的变量这一事实使得输出阶段难以组织。

为什么不使用std::string 的数组?

std::string questions[] = {"Quesstion one", "Question two", "Question three"};

并使用输出

for (auto& question : questions){
    std::cout << question;
}

这利用了 C++11 中的创新。

最后,为了将文本文件读入std::vector&lt;std::string&gt;,请参阅Reading line from text file and putting the strings into a vector?

【讨论】:

  • 但如果我需要输入大问题,那就很难了。我也想写20-30个问题。
  • 嗯,是的,你的手可能会因为所有的打字而受伤。最终,您将从文件中读取std::string 数组。
  • “文件”是std::fstream。对于您想要的行std::getline。我建议尝试通过问答来学习基本的编程概念,你错过重要的东西。这就是存在书籍和课程的原因。
  • @RKTilak:开玩笑地说,Turbo C++ 不是 C++ 编译器。这是 1990 年代的遗物,使用它只会损害您的市场价值。想想每次你玷污与它搏斗的经验时,每小时要花费你 100 美元。花你的周末升级到一个免费的。 gcc 非常好,虽然很遗憾我不再使用它。
  • 是的,忘记 Turbo C++ 它古老且不受支持(甚至不确定它的“继任者”C++ Builder)。如果您在 Windows 上获得 Visual Studio(个人和小型企业免费)visualstudio.com/vs/community。如果你在 Linux 或 Mac 上,你有 GCC 和许多免费的 IDE 可供选择。
【解决方案2】:

如果您必须使用字符数组,则需要一个字符数组数组。

const size_t MAX_QUESTION_LENGTH = 100;
const size_t MAX_QUESTIONS = 5;

char question_texts[MAX_QUESTIONS][MAX_QUESTION_LENGTH] =
{
  "Question 1",
  "Question 2",
  //...
  "Question 5",
};

int main()
{
  for (size_t i = 0; i < MAX_QUESTIONS; ++i)
  {
    std::cout << "\n"
              << question_texts[i]
              << "\n";
  }
  return 0;
}

另一种选择是使用vectorstring

std::vector<std::string> question_database;
//...
question_database.push_back("Question 1");
//...
for (i = 0; i < question_database.size(); ++i)
{
  std::cout << "\n"
            << question_database[i]
            << "\n";
}

数组必须在编译时指定其容量。
字符串和向量在运行时动态增长。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2014-03-29
    • 1970-01-01
    • 2011-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多