2013-03-01 153 views
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; 

回答

1

不像說java下面創建5個不同的std :: string的副本。因此,[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]); 
} 

我已經換出的原始陣列的矢量分配給N1不會影響陣列,在幾乎所有情況下都應該優先於數組。

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

相關問題