我刚刚开始学习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::“,而不是使用”使用名称空间标准“。为什么会这样呢?我认为他们做了同样的事情。那为什么还要费心一遍又一遍地写呢?
发布于 2013-08-20 00:51:44
将该行放入字符串流中,然后逐个单词提取回来:
#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
逐字阅读。
发布于 2013-08-20 00:58:25
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上试用these questions即可启动。
https://stackoverflow.com/questions/18318980
复制相似问题