【问题标题】:Defining multiple variables in a while loop in C++在 C++ 中的 while 循环中定义多个变量
【发布时间】:2018-03-14 21:33:57
【问题描述】:

虽然我看到有人为 Python 回答这个问题,但我不知道如何在 C++ 中这样做。请记住,我还在学习。

正如标题应该告诉您的那样,我正在尝试通过 while 循环在 C++ 程序中定义多个变量。具体来说,我试图让它读取字符串的前 8 个字符,然后将它们分配给它们的专用 char 值 c1、c2、c3、c4、c5、c6、c7 和 c8。但是,我想不出一个简单的方法来做到这一点。

例如,它应该看到字符串“FAR OUT!”并将以下字符打印到每个 c1-8 变量:

  1. F
  2. 一个
  3. R
  4. (空格)
  5. T

最近的尝试似乎认为我指的是一个名为“c”的变量,而没有考虑到我告诉它取变量检查的值,给它加 1,然后加上那个数字的事实到 c 的末尾,然后取那个输出的变量。

#include <iostream>
#include <string>

using namespace std;

int main()
{
    // varaible declaration(s)
    char c1;
    char c2;
    char c3;
    char c4;
    char c5;
    char c6;
    char c7;
    char c8;
    string phonenumber;
    int check = 0;

    // accept user input
    cout << "Phone number in letters: ";
    cin >> phonenumber;

    // convert string to char
    while(check < 8)
    {
        phonenumber[check] = c(check + 1);
        check = check + 1;
    }
    // start while loop

    // program logic and output
    cout << endl << c1 << c2 << c3 << c4 << c5 << c6 << c7 << c8 << endl;
}

【问题讨论】:

  • while (condition) { /* loop body */ } 没有{},循环中只包含next 语句。
  • 如果你想要的是 8 个chars,为什么不使用std::array&lt;char, 8&gt; chars;
  • 你为什么要这样做?您可以将字符串中的前 8 个字符复制到另一个字符中,或者只使用字符串并直接引用该字符,例如 string_name[index]
  • 嗯,没有。您不能像这样在运行时创建变量名称:c(check + 1).
  • C++ 是一种编译语言,因此您无法在运行时形成变量名。这意味着如果您不使用数组,则无法通过循环来完成。您只需要分别分配每个变量;例如,phonenumber[0] = c1; phonenumber[1] = c2; 等等。但是,您没有为“c”变量分配任何东西,所以这没有任何用处。

标签: c++ string variables while-loop char


【解决方案1】:

你为什么不直接使用char array

#include <array>
...

// instead of c1, c2, ...
std::array<char, 8> c;
// later
while (condition) {
    // read or set here, whatever you need
    c[check] = some_value;
    ...
}

【讨论】:

  • 问题是,我真的不知道如何使用数组。当我一开始不知道一个如何工作时,仅仅说我可以使用一个并没有多大帮助......正如我之前所说,整个标准库都在那里,所以整个 std:: 前缀有点没有实际意义。
  • @Camwoodstock 深入研究任何教程。去谷歌上查询。这个话题对于 SO 来说太宽泛了。这就是我能为你做的一切。
  • @Camwoodstock 或者,选择good C++ book
  • 好的,我试过添加数组;问题是,我不知道如何将变量设置为正确的字符。
  • @Camwoodstock 你需要一本书或一门课。这不是你学习语言的方式。
【解决方案2】:

while 循环对此不起作用。变量的名称是在编译代码时确定的;当程序运行时,你不能动态命名变量。

所以不要使用循环。阅读phonenumber 后,将值复制到相应的变量中:

c1 = phonenumber[0];
c2 = phonenumber[1];

等等。当然,如果phonenumber 中的字符少于 8 个,那就有问题了……

【讨论】:

  • 啊,所以我的方法几乎没有实际意义。谢啦。这可能不是对未来人们最有帮助的答案,但这是最有意义的。
猜你喜欢
  • 1970-01-01
  • 2015-05-01
  • 2016-01-12
  • 2015-10-09
  • 1970-01-01
  • 2016-02-19
  • 1970-01-01
  • 2011-12-23
  • 2014-11-13
相关资源
最近更新 更多