【问题标题】:Looping through every character in user input遍历用户输入中的每个字符
【发布时间】:2013-12-20 18:52:02
【问题描述】:

这里的主要初学者,我如何使用以下方法遍历用户输入中的每个字符:

get(char& c)

我想在循环中使用它来对每个字符(包括空格)做一些事情,但我现在无法让它工作。

如果可以,请提供示例代码。

谢谢

这是我现在拥有的:

for (char& c : cin.get(char& c)) { 
    cout << c;
}

【问题讨论】:

  • 您能否展示一下您迄今为止所做的尝试,我们可以帮助您解决实际问题?
  • 你可以遍历std::string。运算符[] 应该在每个索引处给出字符。
  • 不,我需要使用get。

标签: c++ get


【解决方案1】:

我个人会这样写;

std::string s;
while(std::getline(std::cin, s)) {
    for(char c : s) {
        std::cout << c;
    }
}

尽管如果您想保留它,请不要忘记考虑“\n”分隔符。请注意,除非您关闭终端缓冲(非标准),否则您将只能逐行获取输入。

注意,您可以通过发出文件结束信号来结束循环。在 linux 上,用户必须按 Ctrl + d。

否则,您可以在循环中添加一些逻辑并中断。例如

if(c == 'q') break;

【讨论】:

    【解决方案2】:

    您可以对输入的字符进行循环,直到输入的字符为enter(Ascii 代码 13)

    char c;
    
    while ((intVal = (int)cin.get(c)) != 13){
    ...do processing on the character 'c'
    }
    

    或使用

    char c;
        int intVal=0;
    
        while ((c = cin.get()) != 13){
        ...do processing on the character 'c'
        }
    

    【讨论】:

    • 谢谢。虽然现在我得到:'get' 没有在这个范围内声明
    • 然后使用 cin.get 代替 get
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多