C加特琳·辛

我正在尝试编写一个以特定方式获取用户输入的程序.
首先,我输入一个不包含空格的单词;
然后,输入另一个可能包含空格的单词;
程序分别输出两个单词.

例如,我输入“汤姆一个懒男孩”
然后程序输出“ Tom:一个懒惰的男孩”

这是我尝试做的事情:

int main(){
    string a;
    cin >> a;
    string b;
    getline(cin, b);
    cout << a << ":" << b<< endl;
}

我在cin之后尝试使用getline,但是输出看起来像:“ Tom:一个懒惰的男孩”

如果我输入“ Tom(许多空格)一个懒惰的男孩”,那么它输出“ Tom :(许多空格)一个懒惰的男孩”
我不想这些空间.有一个更好的方法吗?

我看到有一些方法需要在cin之后编辑字符串,但是我们可以在输入阶段解决问题吗?

解决方法:

std::getline函数不会像普通输入运算符>>那样跳过空格.确实.您必须自己删除前导(和可能的尾随?)空格.

删除前导空白可以通过首先找到第一个非空白字符(例如std::find_if),然后从该位置到其余字符(使用std::string::substr)来获得.

或如dyp建议的那样,使用std::ws.链接的参考文献中有一个很好的示例.

上一篇:把字符串中的每个空格替换为“%20”


下一篇:OpenStack里对VPN的支持