gpt4 book ai didi

Cin 之后的 C++ Getline

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:44:52 30 4
gpt4 key购买 nike

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

比如我输入“Tom a lazy boy”然后程序输出“Tom:a lazy boy”

这是我尝试做的:

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

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

如果我输入“Tom(many spaces)a lazy boy”然后它输出“Tom:(many spaces)a lazy boy”我不想那些空间。有更好的方法吗?

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

最佳答案

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

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


或者按照 dyp 的建议,使用 std::ws .链接引用有一个很好的使用示例。

关于Cin 之后的 C++ Getline,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23136487/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com