0

只是想知道是否有人可以帮助我解决我遇到的这个问题,程序总是由于某种原因崩溃,我不知道为什么。我还是 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;
4

1 回答 1

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

于 2013-03-01T17:15:22.157 回答