首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >逐字输入字符串

逐字输入字符串
EN

Stack Overflow用户
提问于 2013-08-20 00:47:48
回答 2查看 110.6K关注 0票数 20

我刚刚开始学习C++。我只是在玩它,遇到了一个问题,它涉及到一个字符串的输入逐个单词,每个单词由一个空格分隔。我的意思是,假设我有

代码语言:javascript
复制
   name  place animal 

作为输入。我想读第一个单词,对它做一些操作。然后阅读第二个单词,对其进行一些操作,然后阅读下一个单词,依此类推。

我首先尝试使用getline存储整个字符串,如下所示

代码语言:javascript
复制
    #include<iostream>
    using namespace std;
    int main()
    {
     string t;
     getline(cin,t);
     cout << t; //just to confirm the input is read correctly
    }

但是,我如何对每个单词执行操作并继续下一个单词呢?

此外,当我在谷歌上到处搜索C++时,我在许多地方看到,人们更喜欢将所有内容都写成"std::“,而不是使用”使用名称空间标准“。为什么会这样呢?我认为他们做了同样的事情。那为什么还要费心一遍又一遍地写呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-20 00:51:44

将该行放入字符串流中,然后逐个单词提取回来:

代码语言:javascript
复制
#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逐字阅读。

在这里你可以读到why is using namespace std considered bad practice.

票数 56
EN

Stack Overflow用户

发布于 2013-08-20 00:58:25

getline一次存储整个行,这不是您想要的。一个简单的解决方法是有三个变量,并使用cin来获得所有变量。C++将在空格处自动解析。

代码语言:javascript
复制
#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即可启动。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18318980

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档