[英]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
被認為是不好的做法。
(這是為了其他可能參考的人的利益)
你可以簡單地使用cin和char數組。 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.