【问题标题】:array of C++ string typesC++ 字符串类型数组
【发布时间】:2010-09-10 22:41:11
【问题描述】:

这些是我的变量:

    const int sizeOfLicToCheckFor = 3;
string licNameToCheckFor[ sizeOfLicToCheckFor ] = { "PROF", "PERS", "PREM" };

当我运行我的程序时,licNameToCheckFor 只用“PROF”初始化,没有别的。 我究竟做错了什么?

【问题讨论】:

    标签: c++ arrays string


    【解决方案1】:

    您如何检查它是否已正确初始化?很可能你做错了,因为代码是绝对正确的:

    #include <string>
    #include <iostream>
    
    using namespace std;
    
    int
    main ()
    {
        const int sizeOfLicToCheckFor = 3;
        string licNameToCheckFor[ sizeOfLicToCheckFor ] = { "PROF", "PERS", "PREM" };
        for (int i = 0; i < sizeOfLicToCheckFor; ++i)
        {
            cout << licNameToCheckFor[i] << endl;
        }
    }
    

    输出:

    $ g++ -o test ./test.cpp
    $ ./test 
    PROF
    PERS
    PREM
    

    您还可以通过不指定数组中字符串的数量来简化代码,如下所示:

    string licNameToCheckFor [] = { "PROF", "PERS", "PREM" };
    

    【讨论】:

      【解决方案2】:

      为我工作。

      为什么你认为它不起作用?

      #include <string>
      #include <iostream>
      
      const int sizeOfLicToCheckFor = 3;
      std::string licNameToCheckFor[ sizeOfLicToCheckFor ] = { "PROF", "PERS", "PREM" };
      
      int main(int argc, char** argv)
      {
          std::cout << licNameToCheckFor[0] << " ";
          std::cout << licNameToCheckFor[1] << " ";
          std::cout << licNameToCheckFor[2] << " ";
      }
      
      > vi t.cpp
      > g++ t.cpp
      > ./a.exe
      PROF PERS PREM >
      

      【讨论】:

      • 调试器会显示不正确的变量值吗?我正在测试我的字符串是否被调试器正确初始化。
      • 您使用的是什么调试器?它向你展示了什么?可能只显示数组的第一个元素吗? “需要更多意见”(c)
      • 我正在使用 VS2008 C++ 的调试器。我运行了几次代码,没有骰子。每次都是它的“教授”。
      • 我试过 CString,它在调试器中显示了数组中的所有值。字符串是什么?
      • @TheFuzz:字符串没有问题。可能是您误读了调试器输出。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-21
      • 2015-02-08
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多