【问题标题】:Trouble with printing first/last elements of the array of strings打印字符串数组的第一个/最后一个元素时遇到问题
【发布时间】:2013-02-16 06:27:30
【问题描述】:

只是想知道是否有人可以帮助我解决我遇到的这个问题,程序总是由于某种原因崩溃,我不知道为什么。我还是 C++ 新手,是的。

它应该做什么:

  1. 创建一个包含 5 个可能元素的字符串数组。
  2. 从用户那里获取 5 个名字(名字和姓氏)
  3. 打印字符串数组的第一个和最后一个元素
  4. 创建一个字符串并让用户为该字符串分配一个句子。
  5. 从(4)打印字符串

步骤 4,5 很简单,但我真的不明白如何在步骤 3 中显示字符串的最后一个元素。

int x;
string n1,n2,n3,n4,n5,user;
string array[5]={n1,n2,n3,n4,n5};

cout<<"Enter 5 names: "<<endl;

getline(cin,n1);
getline(cin,n2);
getline(cin,n3);
getline(cin,n4);
getline(cin,n5);

cout<<endl;

for(x=0;x<5;x++)
{
    int y=array[x].length();
    cout<<array[x].substr(0,1)<<"\t"<<array[x].substr(y,1)<<endl;
}

cout<<endl;
cout<<"Enter sentence for string: "<<endl;
getline(cin,user);
cout<<user<<endl;

system("pause");
return 0;

【问题讨论】:

    标签: c++ arrays string getline


    【解决方案1】:

    与说 java 不同,下面创建了 5 个不同的 std::string 副本。所以分配给 n1 不会影响 array[0]

     string n1,n2,n3,n4,n5,user;
     string array[5]={n1,n2,n3,n4,n5};
    

    做你所追求的“正确”方法是这样的

    std::vector<std::string> array(5);
    
    std::cout << "Enter 5 names: " << std::endl;
    
    for(std::size_t x=0;x<array.size();x++) {
        std::getline(std::cin, array[i]);
    } 
    

    我已经将原始数组换成了向量,几乎在所有情况下都应该优先于数组。

    http://en.cppreference.com/w/cpp/container/vector

    【讨论】:

      猜你喜欢
      • 2021-01-27
      • 1970-01-01
      • 2023-03-14
      • 2016-06-25
      • 2014-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多