promotion image of download ymail app
Promoted

c++ string類別 螢幕輸入問題

#include<string>

int main()

{

string str;

cin>>str;

cout<<str;

}

假設螢幕輸入字串

Don't make me think.

可是str裡面只有Don't

這表示程式遇到空白字元就結束擷取字串的動作.

要怎樣才能讓空白字元也能輸入到str裡面,把"."字元當成結尾字串??

還有string類別 要怎擷取字元到變數裡??

string str="Don't make me think",str2;

char ch;

str2=str.substr(0,1); //這樣str2裡面會有 "D"

ch=str.substr(0,1); //但不能這樣寫耶 怎麼辦??

我想學更多string類別的技巧 可以的話請不要告訴我用陣列讀取空白字串.

2 Answers

Rating
  • 1 decade ago
    Favorite Answer

    #include < iostream >

    #include < string >

    using namespace std;

    void main()

    {

    string str;

    char ch [ 10 ] ;

    cout<<"請輸入一字串: ";

    getline ( cin , str ) ; // 可接收含空白鍵的字串,語法是getline(cin, string)

    str + = ' . ' ; // 字尾加上句號

    cout << str << endl;

    strcpy ( ch , str . c _ str ( ) ) ; //c_str ( ) 函式將string copy到陣列之中

    cout << ch[0] ; // 附標(就是0)可改成你想要擷取的第幾個元素

    }

    2008-04-25 01:42:50 補充:

    getline( cin , str , ' . ' );

    你來跑跑看

    如果句子後面有句點 他跑不跑得出來

    跑得出來再來糾正

    Source(s): 自己打出來有偵錯過的正確程式碼 若有不合題意再說說
    • Commenter avatarLogin to reply the answers
  • 1 decade ago

    他這個答案有小瑕疵

    首先

    若要以 '.' 做結束

    應該要使用

    getline( cin , str , ' . ' );

    才對

    若是只使用getline( cin , str );

    是以換行字元作結尾 ( ' \ n ' ) !!

    如果沒改這個的話

    後面的

    str += ' . ' ;

    就有錯了

    因為 str 很可能本身已經有了句點

    若再加上一個句點

    就會造成兩個句點!!

    • Commenter avatarLogin to reply the answers
Still have questions? Get your answers by asking now.