簡體   English   中英

逐字逐句輸入字符串

[英]taking input of a string word by word

我剛開始學習C ++。 我只是玩弄它並遇到一個問題,包括逐字逐句輸入字符串,每個單詞用空格分隔。 我的意思是,假設我有

   name  place animal 

作為輸入。 我想讀第一個字,對它做一些操作。 然后讀取第二個單詞,對其進行一些操作,然后讀取下一個單詞,依此類推。

我試着用這樣的getline存儲整個字符串

    #include<iostream>
    using namespace std;
    int main()
    {
     string t;
     getline(cin,t);
     cout << t; //just to confirm the input is read correctly
    }

但是,我如何對每個單詞執行操作並繼續下一個單詞?

此外,在谷歌上搜索C ++時,我在許多地方看到,而不是使用“使用命名空間std”,人們更喜歡用“std ::”編寫所有內容。 為什么? 我認為他們做同樣的事情。 那么為什么要一次又一次地寫它呢?

將該行放入字符串流中並逐字逐句提取:

#include <iostream>
#include <sstream>
using namespace std;

int main()
{
    string t;
    getline(cin,t);

    istringstream iss(t);
    string word;
    while(iss >> word) {
        /* do stuff with word */
    }
}

當然,您可以跳過getline部分並直接從cin逐字閱讀。

在這里你可以閱讀為什么using namespace std被認為是不好的做法。

(這是為了其他可能參考的人的利益)

你可以簡單地使用cinchar數組。 cin輸入由它遇到的第一個空格分隔。

#include<iostream>
using namespace std;

main()
{
    char word[50];
    cin>>word;
    while(word){
        //Do stuff with word[]
        cin>>word;
    }
}

getline一次存儲整行,這不是你想要的。 一個簡單的解決方法是使用三個變量並使用cin來獲取它們。 C ++將在空格處自動解析。

#include <iostream>
using namespace std;

int main() {
    string a, b, c;
    cin >> a >> b >> c;
    //now you have your three words
    return 0;
}

我不知道你在談論什么特別的“操作”,所以我無法幫助你,但如果它正在改變字符,請閱讀字符串和索引。 C ++文檔很棒。 至於使用命名空間std; 與std ::和其他圖書館相比,已有很多人說過。 在StackOverflow上嘗試這些 問題即可開始。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM