1. 程式人生 > >scanf函數和cin的區別、類的數組、C++排序函數

scanf函數和cin的區別、類的數組、C++排序函數

讀取 sin 出現 vector names 排序 iostream print main

給定n個字符串,將這n個字符串按照字典序進行排列,此處用排列函數是C++的庫函數sort,產生如下兩個疑問,望大佬解答

#include <iostream>
#include <algorithm>
#include <string>
#include <vector>

using namespace std;
/*
**********************************************
Q1:為什麽定義類的數組,無法用sort函數排序呢?
會出現數組越界的情況,求解答
*********************************************
int main()
{
    string str[1000];
    int n;
    scanf("%d",&n);
    for(int i = 0;i < n;i++){
        scanf("%s",str+i);
        str[i] = str[i] +‘\0‘;
    }
    sort(str,str+n-1);
    for(int i =0;i < n;i++)
        printf("%s\n",str+i);
    return 0;
}
**********************************************
*/ /* 以下代碼正常運行 */ int main() { vector<string> str; string newstr; int n; scanf("%d",&n); for(int i = 0;i < n;i++){ cin>>newstr; //scanf("%s",newstr); //Q2:這裏用scanf進行讀取輸入,為什麽會出錯呢? str.push_back(newstr); } sort(str.begin(),str.end());
for(int i =0;i < n;i++) cout<<str[i]<<endl; return 0; }

scanf函數和cin的區別、類的數組、C++排序函數