C ++读取直到检测到选项卡

时间:2015-02-22 01:31:12

标签: c++

这可能有点多余,但是在C ++中达到 tab 之前,是否有一个简短的/简单的字符串读取方法?与其他问题类似,但我想继续阅读,即使我打了一个空格。例如,如果STDIN是

Cute Kitty    is    fabulous as always

然后我想读Cute Kitty;是;一如既往的美妙,三次。 我见过人们用文件中的正则表达式来做这件事,但是你怎么用C ++中的stdin做到这一点?我想把它放在一个字符串类中,每当我尝试像

这样的东西时
scanf("%s\t", &mystring);

它引发了一个错误,因为我没有使用字符数组。 谢谢,请保持答案足够容易让菜鸟理解。

2 个答案:

答案 0 :(得分:3)

此代码似乎对我有用。它基本上获取用户通过stdin输入的行,然后读取每个字符等待制表符(\t)或行尾。

#include <iostream>
#include <string>

int main()
{
    std::string a;
    std::getline(std::cin,a);
    int index_holder = 0;
    for(std::string::size_type i = 0; i < a.size(); ++i)
    {
        if(a[i] == '\t' || (i == a.size() - 1)) {
            std::cout << a.substr(index_holder, i - index_holder) << std::endl;
            index_holder = i + 1;
        }

    }
    return 0;
}

答案 1 :(得分:0)

查看strtok

userInput

将字符串拆分为标记。对此函数的一系列调用将str拆分为标记,标记是由作为分隔符一部分的任何字符分隔的连续字符序列。